Extensions

昨日に引き続き https://docs.swift.org/swift-book/LanguageGuide/Extensions.html を読む。

  • オリジナルソースコードにアクセスできなくても機能性を追加できる(遡及モデリング)
  • extension を宣言できるのはファイルスコープだけ
  • extensionでプロトコル適合は Protocol の章で
  • 総称型の extension は Generics の章で
  • let aMarathon = 42.km + 195.m
  • extensionで便利イニシャライザを追加できるけど、指定イニシャライザや deinitializer は追加できない
  • 別のモジュールで宣言された構造体に、エクステンションでイニシャライザを追加すると、新しいイニシャライザは定義モジュールのイニシャライザを呼び出すまで、selfにアクセスできません。
  • 3.repetitions { print("Hello!") }
  • mutating func square() { self = self * self }
  • extensionにネストされた型 extension Int { enum Kind {〜} …}
  • ネストされた型へのextension extension OuterType.InnerType {〜}