我可以在Scala类中定义无名方法吗?

时间:2010-10-22 19:16:19

标签: class scala syntax methods

这可能达到吗?如果是,请更正我的Foo声明语法。


class Foo (...) {
...
  def /* the nameless method name implied here */ (...) : Bar = new Bar (...)
...
}

class Bar (...) {
...
}

val foo : Foo = new Foo (...)

val fooBar : Bar = foo (...)


3 个答案:

答案 0 :(得分:12)

您应该使用apply方法:

class Foo (y: Int) {
  def apply(x: Int) : Int = x + y
}


val foo : Foo = new Foo (7)

val fooBar  = foo (5)

println(fooBar)

然后运行代码:

bash$ scala foo.scala 
12

答案 1 :(得分:4)

我认为使用'apply'作为方法名称应该像这样工作。

答案 2 :(得分:4)

您可以扩展Function0[Bar]并实施def apply: Bar。见Function0

 object Main extends Application {
   val currentSeconds = () => System.currentTimeMillis() / 1000L
   val anonfun0 = new Function0[Long] {
     def apply(): Long = System.currentTimeMillis() / 1000L
   }
   println(currentSeconds())
   println(anonfun0())
 }