case class Hoge(x: Int)
class Bar
case object Foo {
def ~>(bar: Bar): Hoge = {
Hoge(1)
}
def ~>(x: Int)(bar: Bar): Hoge = {
Hoge(1)
}
}
object Main {
val foo = Foo
val bar = new Bar
foo ~> bar
// foo ~>(1) bar // これはエラー
(foo ~>(1))(bar) // 原理的にはこれなら、呼べる
foo.~>(1)(bar) // 2引数なのでドットは省略出来ない
val fooPf = foo.~>(1) _
fooPf(bar)
}