コード例では、私は非常に閉鎖本体内側の線var number = number
について混乱していますswift office documentクロージャ内の変数定義をオーバーライドできますか?
let digitNames = [
0: "Zero", 1: "One", 2: "Two", 3: "Three", 4: "Four",
5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine"
]
let numbers = [16, 58, 510]
let strings = numbers.map {
(number) -> String in
var number = number //What is this!
var output = ""
while number > 0 {
output = digitNames[number % 10]! + output
number /= 10
}
return output
}
から来ています。どのように同じスコープの変数を "再宣言"できますか?
で に削除されますnumber) - >文字列 'number'パラメータは定数です。だからあなたはそれからvarを作り、それは変更可能になります。スコープ内では、変更可能なものが使用され、もう一方は無視されます。このような「再宣言」は、関数の範囲内でのみ関数パラメータで動作します。 – Moritz
@EricD:これは、関数のパラメータだけでなく、他のローカルスコープでも機能します。 –
@MartinRこの物件に関してスイフト3で何か変更されましたか? – SLN