ababup1192
11/17/2016 - 8:05 PM

Main.scala

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)
}