追加の変数を作成せずにこのエラーに対処するにはどうすればよいですか?
func reduceToZero(x:Int) -> Int {
while (x != 0) {
x = x-1 // ERROR: cannot assign to 'let' value 'x'
}
return x
}
xの値を格納するためだけに追加の変数を作成したくありません。私がやりたいことをすることさえ可能ですか?
追加の変数を作成せずにこのエラーに対処するにはどうすればよいですか?
func reduceToZero(x:Int) -> Int {
while (x != 0) {
x = x-1 // ERROR: cannot assign to 'let' value 'x'
}
return x
}
xの値を格納するためだけに追加の変数を作成したくありません。私がやりたいことをすることさえ可能ですか?
Swift 1 および 2 の場合 (Swift 3 の場合は、inout パラメータを使用した achi の回答を参照してください): Swift の関数の引数はlet
デフォルトで設定されているvar
ため、値を変更する必要がある場合は次のように変更します。
func reduceToZero(var x:Int) -> Int {
while (x != 0) {
x = x-1
}
return x
}
可変配列ポインターを渡すためのSwift3の回答。
関数:
func foo(array: inout Array<Int>) {
array.append(1)
}
関数の呼び出し:
var a = Array<Int>()
foo(array:&a)
var
Swiftでは、関数宣言の変数名の前にキーワードを追加するだけです。
func reduceToZero(var x:Int) -> Int { // notice the "var" keyword
while (x != 0) {
x = x-1
}
return x
}
Swift book の「Functions」の章のサブセクション「Constant and Variable Parameters」を参照してください(現在の iBook の 210 ページ)。