【发布时间】:2014-10-29 02:54:35
【问题描述】:
我正在尝试创建一个保持对外部函数的局部变量的引用的闭包,但我不断收到这个模棱两可的错误 int is not same to 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+=n 之后返回 i 来解决此问题。我以为i+=n 会自行返回,但显然不会。
【问题讨论】:
-
FWIW,它可以通过显式返回
i来修复(而不是+=的值,这可能会在这里丢掉东西):i+=n; return i; -
@Thilo 你写的正是我写的时间。