什么原因导致Swift出现此错误?

时间:2014-07-23 21:17:59

标签: xcode compiler-construction swift beta

我刚刚使用Swift语言更改下载了Xcode Beta4,并在一段代码中更新了数组(你知道,Int []到[Int])。我没有改变任何其他东西。现在我的代码将不会编译,因为一个非常怪异的错误。

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

这会导致以下错误:

  

'@ Ivalue $ T8'与'Int'

不同

有谁知道导致此错误的原因是什么?代码应该没问题。

提前致谢。

1 个答案:

答案 0 :(得分:1)

默认情况下,

Delare src作为参数var在swift中是常量,您要更改src的值,因此将其声明为var

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

您没有从函数返回结果。如果您希望在函数中传递第一个变量的结果,您可以将其声明为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]