Swift メソッドのパラメータを変更可能にしますか? 質問する

Swift メソッドのパラメータを変更可能にしますか? 質問する

追加の変数を作成せずにこのエラーに対処するにはどうすればよいですか?

func reduceToZero(x:Int) -> Int {
    while (x != 0) {
        x = x-1            // ERROR: cannot assign to 'let' value 'x'
    }
    return x
}

x の値を格納するためだけに追加の変数を作成したくありません。私が望むことを行うことは可能ですか?

ベストアンサー1

他の回答で述べられているように、Swift 3 では変数の前に var を置くことは非推奨になっています。他の回答では述べられていませんが、パラメータを宣言する機能がありますinout。ポインタを渡すことを考えてみてください。

func reduceToZero(_ x: inout Int) {
    while (x != 0) {
        x = x-1     
    }
}

var a = 3
reduceToZero(&a)
print(a) // will print '0'

これは再帰処理で特に役立ちます。

Appleのinout宣言ガイドラインは以下を参照ここ

おすすめ記事