1

外部関数のローカル変数への参照を保持するクロージャーを作成しようとしていますが、このあいまいなエラー 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後に戻ることでこれを修正できることがわかりましたi+=n。自然に戻ると思っていi+=nたのですが、そうではないようです。

4

2 に答える 2

3

+=for(Int, Int)は次のように宣言されています

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

何も返しません。

UInt8しかし、なぜ関与するのかはわかりません。たぶん、それは宣言func +=(inout lhs: UInt8, rhs: UInt8)最後のものだからです。func +=(...)

于 2014-10-29T03:12:13.913 に答える