私のコードは今動作しません。ループの中で名前をつけてそれ自体を追加しようとしていますが、コンパイラがエラーメッセージを表示していて、コードが印刷されていません。swift 3ループエラー(変数をとり、それを単独で追加する)
let names = [Double(2),3,8] as [Any]
let count = names.count
for i in 0..<count {
print((names[i]) + names[i])
}
私のコードは今動作しません。ループの中で名前をつけてそれ自体を追加しようとしていますが、コンパイラがエラーメッセージを表示していて、コードが印刷されていません。swift 3ループエラー(変数をとり、それを単独で追加する)
let names = [Double(2),3,8] as [Any]
let count = names.count
for i in 0..<count {
print((names[i]) + names[i])
}
Double
のように計算可能するAny
をキャストする必要があります。おそらくあなたのエラーについてであるタイプAny
の2つのオブジェクトを追加することはできません。
それをドロップするとコードが機能します。
let names = [Double(2),3,8]
let count = names.count
for i in 0..<count {
print(names[i] + names[i])
}
出力:
4.0
6.0
16.0
いっそのこと:
let names = [Double(2),3,8]
for num in names {
print(num + num)
}
Any
には、+
演算子がないためです。
これにより、期待した結果が得られます。
あなたは2つの値を加算し、その結果を印刷したい場合は、as [Any]
の使用は意味をなさない
let names = [Double(2),3,8] as [Any]
let count = names.count
for i in 0..<count {
if let value = names[i] as? Double {
print(value + value)
}
}
しかしこれは 'Int'要素に対しては機能しません – Hamish
エラーメッセージは何ですか? – Ryan
as [Any]のポイントは何ですか? – rmaddy
よく 'names'は' [Any] 'なので、要素はまあ、* anything *になります。任意のものを一緒に追加することはできません。もし 'names [i]'が 'Bool'だったらどうしますか? – Hamish