16233

[code]

    var a: Int = { 10 + 20 }() // (1)
    var b: Int { return 10 + 20 } // (2)
    
    println(a)
    println(b)
    
[/code]

上記コードの場合、変数a, bともに30と表示されます。

(1)はclosureの結果がaに格納されていると理解できるのですが、(2)でbに値が入るのが理解できません。

(2)もclosureなのでしょうか？  
なぜ「=」がないのでしょうか？  
なぜ式の末尾に「()」がないのでしょうか？

ご教授お願い致します。

また、参考になるサイトがあれば教えて下さい。


CC BY-SA 3.0
2015-09-04T06:10:47.413
16231
2015-09-04T06:40:51.020
question
swift
swiftの値の格納方法について


(2)は、 **Computed Property** （計算プロパティ）です。省略せず定義を記述すると、

[code]

    var b: Int {
        get {
            return 10 + 20
        }
    }
    
[/code]

Computed Propertyの定義は、基本Getter（`get {}`）とSetter（`set()
{}`）がセットになりますが、Setterは省略可能で、省略した場合、ご質問にあるように、

[code]

    var b: Int { return 10 + 20 }
    
[/code]

という省略構文が使えます。

> また、参考になるサイトがあれば教えて下さい。

Apple Developer  
[The Swift Programming Language -
Properties](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Properties.html#//apple_ref/doc/uid/TP40014097-CH14-ID254)


CC BY-SA 3.0
2015-09-04T06:35:33.203
16233
2015-09-04T06:40:51.020
2015-09-04T06:40:51.020
7362
7362
16231
answer