2017-04-21 1 views
0

내 코드가 지금 작동하지 않습니다. 루프에서 이름을 가져 와서 추가하려고하지만 컴파일러가 오류 메시지를 표시하고 코드가 인쇄되지 않습니다. Any 때문에신속한 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

처럼 calculatable하는 Any 캐스팅해야합니다. 두 가지 유형의 객체를 추가 할 수 없습니다. 오류 유형은 Any입니다.

코드를 삭제하면 코드가 작동합니다.

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

+ 운영자가 없습니다.

이렇게하면 예상 한 결과를 얻을 수 있습니다.

당신이이 개 값을 추가하고 결과를 인쇄 할 경우

, 당신은 as [Any]의 사용은 이해되지 않는다 Double

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