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にクローズされました