2017-04-11 8 views

答えて

1

が閉鎖構文後続何が参照していると呼ばれています。クロージャーを使いやすくするための構文的な砂糖です。

閉鎖に関連する構文糖機能には他にも多くの種類がありますが、回答はhereです。

いつものように、Swift Language guideを強くお勧めします。これは、このような基本を説明するのに大変役立ちます。

11

全く違いはありません。実際、彼らはまったく同じ方法です。コンパイラに

myQueue.async(execute: { foo() }) 

は、任意の関数やメソッドの最後の引数が関数である場合は、あなたの代わりに末尾の閉鎖とその引数を渡すことができ

myQueue.async { 
    foo() 
} 

とまったく同じですそれを引数リストの中に渡します。これは、DispatchQueue.asyncのような高次関数を言語の一部のように感じ、構文上のオーバーヘッドを減らし、ドメイン特有の言語の作成を容易にするために行われます。

末尾のクロージャの構文hereに関するドキュメントがあります。

ところで、私の最初の例を書くための慣用的な方法は、次のようになります。

myQueue.async(execute: foo) 
+0

この場合、次のようにすることもできます: 'myQueue.async(execute:foo)' :) – Alexander

+0

私は並列をもっと明白にしようとしましたが、それはより慣用的な方法でしょう:) –

関連する問題