我正在尝试创建一个闭包来保持对外部函数的局部变量的引用,并且我不断得到这个错误的错误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
会自己回归,但显然不是。
答案 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
}