'诠释'与' UInt8'不同在关闭

时间:2014-10-29 02:54:36

标签: swift int closures uint8t

我正在尝试创建一个闭包来保持对外部函数的局部变量的引用,并且我不断得到这个错误的错误int与unint8不同。这对我没有意义,因为这里没有涉及数组。此处也没有涉及UInt8s

func increment(n:Int)-> ()->Int {
    var i = 0
    var incrementByN = {
        () -> Int in
        i += n
    }
    return incrementByN
}
var inner = increment(4)
inner()
inner()
inner()

我发现我可以在i之后返回i+=n来解决此问题。我认为i+=n会自己回归,但显然不是。

2 个答案:

答案 0 :(得分:3)

+=的{​​p> (Int, Int)声明为

func +=(inout lhs: Int, rhs: Int)

它什么都不返回。

我不知道为什么UInt8会涉及到。 也许,这是因为func +=(inout lhs: UInt8, rhs: UInt8)func +=(...)声明的最后一个

答案 1 :(得分:2)

不确定UInt8的含义,但似乎+=没有值。

var i = 1;
let x = i += 3;  // now x is of type () 

您可以显式返回i的新值:

var incrementByN = {
    () -> Int in
    i += n
    return i
}