2017-10-04 14 views
1

申し訳ありませんが、愚かな質問をしています。しかし、私はこのことについて混乱しています:スウィフト変数の構文

var debugMessage: String = "Level 1" 

それとも閉鎖です:

var debugMessage: String { 
    return "Level 1" 
} 

は、そのコードは同じことを意味していますか?

+0

要約:結果は同じです。 Btw、あなたは 'var debugMessage = {return" Lebel 1 "}' – LinusGeffarth

答えて

0

最初に入力した例は計算された変数です。それが常にLevel 1を返す場合、2つの例は同じ結果をとします。

計算変数はそれは戻り値だを変更することができながら、しかし、一般的に言えば、第2の方法は唯一、変数iにnitial値を提供します。

1

最初:

var debugMessage: String { 
    return "Level 1" 
} 

のみゲッターと、計算プロパティ宣言である

var debugMessage: String { 
    get { return "Level 1" } 
} 

の短縮形です。

もう1つは、初期化された単純なストアドプロパティ宣言です。

ご覧のとおり、1つは計算されたプロパティで、もう1つはストアドプロパティです。その違いは、計算されたプロパティと格納されたプロパティの違いとほとんど同じです。

ここにはいくつかあります。

  • ゲッターのみで計算されたプロパティは設定できません。 varで宣言されたストアドプロパティは、
  • と設定できます。計算されたプロパティは拡張子に配置できます。ストアドプロパティはできません。
  • 計算されたプロパティは、実際にアクセスするまでメモリを占有しません(「レベル1」はメモリに格納されません)。保存されたプロパティは、オブジェクトが初期化されるときにその値をメモリに格納します。