エントリーの編集
![loading...](https://b.st-hatena.com/bdefb8944296a0957e54cebcfefc25c4dcff9f5f/images/v4/public/common/loading@2x.gif)
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
![アプリのスクリーンショット](https://b.st-hatena.com/bdefb8944296a0957e54cebcfefc25c4dcff9f5f/images/v4/public/entry/app-screenshot.png)
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
type Self
trait A { type Self <: A }class B extends A { type Self = B }ってよくやるけどもっといい方法はある... trait A { type Self <: A }class B extends A { type Self = B }ってよくやるけどもっといい方法はあるのだろうか。 — ねこはるさん (@halcat0x15a) 2月 17, 2012 に対し、りりかるろじかるさんが反応をくれたので書いてみます。 最初に、これが何の役に立つかですが、 と定義したとき、 となります。 ポイントは、 Barからfを呼び出すとBarが返る。 Barからgを呼び出すとOption[Bar]が返る。 fの返り値からhを呼び出せる。 といったところでしょうか。 つまり、スーパークラスでサブクラスの値を返すことができるということです。 しかし、これにはサブクラスがいちいちSelfを定義しなければいけないので楽したいですよね。 そこで、りりろじさんに考えて頂いた方法を書いていきます。 this.type this.