ScalaでFizzBuzzを書くと
関数呼び出しの省略
println(1 _2 fizz _4 buzz fizz 7 _8 "fizz" buzz 11 fizz 13 _14 fizzbuzz) //println(1._2(fizz)._4(buzz).fizz(7)._8("fizz").buzz(11).fizz(13)._14(fizzbuzz))
Implicit Class
あたかもクラスに機能追加したように振る舞える
implicit class MyInt(val i:Int) { def hoge = "foo" } 100.hoge// => "foo"
Generalized Type Constraints
特定の型のみが呼び出せるように制約をかける
case class Bar[A](b:A) { def baz(implicit ev : A <:< Int) = "Only Int" } Bar(100).baz// => "Only Int" Bar("hoge").baz//Error
<:<
(サブクラス) 以外にも=:=
(同じ型),<%<
(キャストして等価になれる)などがある