6

私はいくつかのサードパーティのコードを分析していますが、次のような「怠惰な」varステートメントがあります。「計算されたプロパティ」の中括弧の後に括弧が何をしているのかを理解したいと思います:

lazy var defaults:NSUserDefaults = {
    return .standardUserDefaults()
}()

「return .standardUserDefaults()」は NSUserDefaults インスタンス オブジェクトを返しているのに、なぜ右中括弧の後に () を追加するのでしょうか?

ありがとう

4

2 に答える 2

13

これは、デフォルトが最初にアクセスされたときに実行されるブロックであることを意味します。がなければ、()デフォルトは type の変数のブロック型であることを意味します() -> NSUserDefaults。追加すると、アクセス時に実行されたブロックによって返されるもの()だけになります。NSUserDefaults

于 2016-02-06T05:46:00.643 に答える