1. ホーム
  2. swift

[解決済み] Swiftはメソッドパラメータをミュータブルにする?

2022-05-02 19:55:15

質問

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

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

xの値を格納するためだけに追加の変数を作りたくないのですが、私の望むことは可能でしょうか?

どのように解決するのですか?

他の回答で述べられているように、Swift 3では、変数の前にvarを置くことは非推奨とされています。他の回答で述べられていないけれども、変数の前にvarを置くことは廃止されました。 inout パラメータがあります。ポインターを渡すようなものです。

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

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

これは特に再帰において有効である。

アップルの inout 宣言のガイドラインはこちら こちら .