式1と2の間のコンパイラの見解との違いは何ですか?(下記のコードをご覧ください) Swift 3以降、複数のパラメータをタプルの形で関数に渡すことはできません。最初の式はどのように動作しますか?Swift 3のクロージャ略記構文
func f(_ x: Int, _ y: Int) -> Int {
return x + y
}
// expression 1: compiles
[(1, 2)].map(f)
// expression 2: doesn't compile "Passing 2 arguments to a callee as a single tuple value has been removed in Swift 3"
[(1, 2)].map { (t: (Int, Int)) -> Int in
return f(t)
}
答えをありがとう。要約する。 "タプルスプラット"フォームがサポートされていない理由があります。それは明らかです。 '[(1,2)] .map(f)'は実装が簡単だったので動作しますか? :) –
既に実装されているので、実装が簡単だったので、私は言うつもりはありません。彼らはそれを取り出した。しかし、たぶん「正しく動作させるために*実装するのは簡単だったから」また、関数形式を削除すると、関数を使って直接mapを呼び出すことは基本的に不可能になりました。あなたはいつもクロージャーを使わなければなりません。クロージャを使用すると、スプラットではなくパラメータを書き出すことができるようになります。 –