Avatar
↓の方法、 Base が値型だとオーバーヘッド大きそう。 struct Extension<Base> { let base: Base init (_ base: Base) { self.base = base } } protocol ExtensionCompatible { associatedtype Compatible static var ex: Extension<Compatible>.Type { get } var ex: Extension<Compatible> { get } } extension ExtensionCompatible { static var ex: Extension<Self>.Type { return Extension<Self>.self } var ex: Extension<Self> { return Extension(self) } } https://qiita.com/motokiee/items/e8f07c11b88d692b2cc5

Extensionをモダンでオシャレにしたい

この記事の結論を先に書いておくと、 UIColor.yamabuki のように書いているExtensionを以下のようにオシャレに書くことができる、と...
6:04 AM
↓ここで毎回コピーが走る。 var ex: Extension<Self> { return Extension(self) }