3
マップ関数で使用される簡略構文の一部を理解しようとしています。Swiftのマップ関数の短縮形クロージャ構文の理解
次は混乱が産むのはここ
let array = [1, 2, 3]
// these make sense
let arr1 = array.map({String($0)})
let arr2 = array.map{String($0)}
let arr3 = array.map({ number in
return String(number)
})
let arr4 = array.map({ (number) -> String in
String(number)
})
がある設定です。迅速に私はマップの中括弧を捨てることができますが、これはできないことのように思えます。おそらく作られている魔法の推論は?また、なぜこのように文字列が初期化されるのですか?
// this doesn't make sense. Foregoing the curly braces? I can't do that!!!
let arr5 = array.map(String.init)
let arr6 = array.map(String()) // Compile Error: Cannot convert value of type 'String' to expected argument type '@noescape (Int) throws -> _'
これは
func crap(block:(Int)-> String) {
print("Int to string block" + block(1));
}
// works obviously
crap{ "\($0) some garbage" }
// compile error : Anonymous closure argument not contained in a closure
crap("\($0) some garbage")
ああ、私はダミーです。私は、ブロックを関数呼び出しに振り回すことができると思った誤った道を下った。よろしくお願いします。 – Biclops