2017-04-21 5 views
0

私のコードは今動作しません。ループの中で名前をつけてそれ自体を追加しようとしていますが、コンパイラがエラーメッセージを表示していて、コードが印刷されていません。swift 3ループエラー(変数をとり、それを単独で追加する)

let names = [Double(2),3,8] as [Any] 
let count = names.count 
for i in 0..<count { 
    print((names[i]) + names[i]) 
} 
+1

エラーメッセージは何ですか? – Ryan

+2

as [Any]のポイントは何ですか? – rmaddy

+1

よく 'names'は' [Any] 'なので、要素はまあ、* anything *になります。任意のものを一緒に追加することはできません。もし 'names [i]'が 'Bool'だったらどうしますか? – Hamish

答えて

0

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) 
} 
1

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) 
    } 
} 
+0

しかしこれは 'Int'要素に対しては機能しません – Hamish

関連する問題