Avatar
omochimetaru 5/19/2017 7:21 AM
class Animal { // コンパイルOK func aa() -> Self { return self } static func bb() -> Self { // コンパイルを通せるコードが見当たらない } }
7:21 AM
プロトコル定義の中 ではなく 、実際のクラスの中で Self って書くと、 self の型 を意味するようなんですが
7:22 AM
こっちの具体的な型の中での Self は、フィールドや引数やクロージャ型に混ぜて使うと怒られて、この、インスタンスメソッドの返り値と、スタティックメソッドの返り値の2箇所にしか書けなくて
7:22 AM
そして、インスタンスメソッドの場合は、 self でしか満たせないように思えるんだけど
7:22 AM
スタティックメソッドの場合はどうすれば満たせるんだろう? 絶対に満たせないなら、 インスタンスメソッドの返り値部分だけ に使える、って仕様で良いと思う。
7:23 AM
'Self' is only available in a protocol or as the result of a method in a class;
このようなエラーメッセージが出るけど、 result of a instance method で良いと思うんですよね。