Closed5
ゼロから作るCatsシリーズ
↑の記事の続きを書いていく際のメモを管理する
型クラス編はimplicit編に改名して、型クラスの詳細な説明を無くす方針で考えている。
型クラスの説明をするのは次にMonoid編でやりたい
型クラス編はimplicit編に改名して、型クラスの詳細な説明を無くす方針で考えている。
型クラス編をimplicit編に変更して更新済み。文字数は半分以下に。
型クラス編メモ
大体の流れ
前回の記事の紹介
型クラスの概要
アドホック多相の話
多相について
サンプルコード
- combineIntメソッドとcombineStrメソッドを実装
- 2つのメソッドには共通点が多い
- 型パラメータの説明
- combine[T]を定義
- このままでは「Tに対して
+
メソッドを持つ」という制約がない - Additiveトレイトを定義
trait Additive[T] {
def |+|
}
- Moneyケースクラスを定義
case class Money(value: Int) extends Additive[Money]
object Money {
def |+|
}
- combineメソッドを変更
def combine[T <: Additive]
- IntやStringは定義済みであるため、Additiveクラスを継承できない
- これを解決するのがアドホック多相
続きは実際に記事に書いていっちゃえば良さそう
このスクラップは2021/04/15にクローズされました