この記事では「The Swift Programming Language」を1から読んだ感想とか発見を書いてみようと思います。
「The Swift Programming Language」とはSwiftの公式ドキュメントでiBooksや下ページで見る事ができます。
The Swift Programming Language (Swift 2.1): About Swift
読んだ所
今回はProperties
という項目を読みました。
The Swift Programming Language (Swift 2.1): Properties
学んだこと
lazy修飾子
lazyという修飾子を使えばプロパティーへの初期値の代入を利用時にする事ができます。
普通はプロパティーの初期値はクラスの初期化時に行われます。
その為下の例では"init"が一番最初に出力されます。
// init → 1 → 2の順番でログが表示される class MyClass { init() { print("init") } } class MainClass { var prop = MyClass() func method() { print(1) print(prop) print(2) } } MainClass().method()
lazyを使う事で、1 → init → 2 の順番でログが表示されます。
// 1 → init → 2の順番でログが表示される class MyClass { init() { print("init") } } class MainClass { lazy var prop = MyClass() func method() { print(1) print(prop) print(2) } } MainClass().method()
classとstaticの違い
Swiftでは似ている修飾子としてclassとstaticの2種類があります。
違いは下の通りです。
class
class let a = ""
といった普通の使い方ができない。
サブクラスからオーバーライドできる。
static
static let a = ""
といった普通の使い方ができる。
サブクラスからオーバーライドできない。
実例
class MyClass { class var a = "" // → エラー class var b: String { return "" } static var c = "" static var d: String { return "" } } class MyClass2: MyClass { override class var a = "" // → エラー override class var b: String { return "" } override static var c = "" // → エラー override static var d: String { // → エラー return "" } }