Slide 17
Slide 17 text
メソッド名を増やす
総称型を引数にとったメソッドに対して、Method Overloadはできないために、仕様を実現
するには以下の様な実装が必要になる
object ListGenerator {
def generateFromInt(x: Int): List[Int] = x::Nil
def generateFromStr(x: String): List[Char] = x.map(_.toChar).toList
def generateFromIntList(x: List[Int]): List[Int] = x
def generateFromStrList(x: List[String]): List[Char] = x.flatMap(_.map(_.toChar).toList)
}
val fromInt = ListGenerator.generateFromInt(1)
val fromStr = ListGenerator.generateFromStr("hoge")
val fromIntList = ListGenerator.generateFromIntList(List(1, 2, 3, 4))
val fromStrList = ListGenerator.generateFromStrList(List("hoge", "fuga"))
// val fromInt: List[Int] = List(1)
// val fromStr: List[Char] = List(h, o, g, e)
// val fromIntList: List[Int] = List(1, 2, 3, 4)
// val fromStrList: List[Char] = List(h, o, g, e, f, u, g, a)
Magnet Patternが解決する問題