case class Hoge(x: Int) class Bar case object Foo { def ~>(bar: Bar): Hoge = { Hoge(1) } def ~>(args: Tuple2[Int, Bar]): Hoge = { Hoge(1) } } object Main { val foo = Foo val bar = new Bar foo ~> bar foo ~> (1, bar) }