2014-06-07 2 views
0

저는 스위프트에서 피보나치 수 측정기를 쓰고 있습니다. 나는 다음과 같은 배열에 액세스 할 변수를 사용하여 문제를 겪고 :이 때, 놀이터 나에게 느낌표 빨간 팔각형을 보여줍니다스위프트 및 어레이

var i = 0; 
var fibnumbers: Array = [] 
var lengthOfFibnumbers: Int = fibnumbers.count 
var e: Int = lengthOfFibnumbers - 1 
var addone: Int = fibnumbers[e] 

. 그것을 클릭하면 다음 오류가 발생합니다 : Could not find an overload for 'subscript' that accepts the supplied arguments.

어떻게 해결할 수 있습니까?

+2

피보 번호를 어떻게 선언 했습니까? 그래서 같은 – Cezar

+1

@Cezar : 'var에 fibnumbers : 배열 = [] var에 lengthOfFibnumbers : 지능 = fibnumbers.count VAR 전자 : 지능 = lengthOfFibnumbers - 1 개 var에 addone : 지능 = fibnumbers [] '를했다 – tjons

답변

4

당신은 지능의 배열로 fibnumbers을 선언해야합니다

var fibnumbers: [Int] = [] 

"어레이는"일반 (배열)로 정의된다. "Array"에 대한 유형을 제공하지 않으면 "AnyObject"로 간주됩니다. 당신이 점점 오류가 좀 이상하지만 당신이 IntAnyObject에서 변환해야 할 때 당신이 Int에 첨자의 결과를 할당하려고하기 때문에 정말입니다. 예를 들어, 다음과 같이 정상적으로 컴파일됩니다. var addone : AnyObject = fibnumbers[e] 그래서 오류가 무엇인지에도 불구하고 문제의 아래 첨자는 아닙니다.

+0

! 감사. – tjons

+0

드루 그그, 왜 그런가요? '지능 [] = [] : 어쨌든 인덱스 값에 대한 변수를 사용하여 배열에 액세스 할 수 있어야합니다 ... – tjons

+0

@tjons 난 당신이 배열'var에 fibnumbers init을 왜 물어 봐도 – drewag