2014-07-23 3 views
0

Swift 언어 변경으로 Xcode Beta4를 다운로드하고 코드 조각 (Int []에서 [Int])으로 배열을 업데이트했습니다. 나는 다른 것을 바꾸지 않았다. 이제 정말 이상한 오류가 발생하여 제 코드가 컴파일되지 않습니다.Swift에서이 오류의 원인은 무엇입니까?

func addto(src: [Int], v: [Int]) { 
    for var i = 0; i < src.count; ++i { 
     src[i] = (src[i] + v[i]) % 2 
    } 
} 

이 오류 다음 원인 :

'@Ivalue $T8' is not identical to 'Int'

사람이 오류의 원인을 알고 있나요? 코드는 괜찮 아야합니다.

미리 감사드립니다.

매개 변수로 기본적으로 빠른 일정이며, 당신이 그렇게 var

func addto(var src: [Int], v: [Int]) { 
    for var i = 0; i < src.count; ++i { 
     src[i] = (src[i] + v[i]) % 2 
    } 
} 

당신이 얻고 싶은 function.If에서 결과를 반환하지 않는로 선언 src의 값을 변경하는 var

답변

1

Delare src 함수에 전달로 첫 번째 변수에 결과가 다음 전화 inout

func addto(inout src: [Int], v: [Int]) {..}

과로 선언 할 수 있습니다

var abc = [1,2] 
addto(&abc,[2,4]) //& is required for inout 
println(abc) // will get result of function [1,0] 

하거나 함수의 결과를 반환

//Use `-> [Int]` as return type 
func addto(var src: [Int], v: [Int]) -> [Int] { 
    for var i = 0; i < src.count; ++i { 
     src[i] = (src[i] + v[i]) % 2 
    } 

    return src 
} 

var abc = addto([1,2],[2,4]) //abc will contains [1,0] 
+0

당신은'inout'을 의미하지 않는다? – holex

+0

오류를 제거하지 못함 var는 충분하지만 결과를 얻으려는 경우 'inout'이어야합니다. – codester

+0

괜찮 았던 것 같습니다. – holex