=>、()=>和Unit=>之间有什么区别?我试图表示一个不带参数且不返回值的函数(如果您必须知道的话,我将在JavaScript中模拟setTimeout函数)。case class Scheduled(time : Int, callback : => Unit)不编译,说“‘val’参数可能不是按名调用”。case class Scheduled(time : Int, callback : () => Unit)编译,但必须奇怪地调用,而不是Scheduled(40, { println("x") } )我必须这么做Scheduled(40, { () => println("x") } )同样有效的是class Scheduled(time : Int, callback : Unit => Unit)但却以一种更不明智的方式被调用。 Scheduled(40, { x : Unit => println("x") } )(单元类型的变量是什么?)我想要当然,它是一个构造函数,如果它是一个普通函数,可以我调用它的方式调用它: Scheduled(40, println("x") )把他的瓶子给孩子!
3 回答
狐的传说
TA贡献1804条经验 获得超3个赞
case class Scheduled(time : Int, callback : => Unit)
case
val
case
val callback
lazy val callback
.
callback: () => Unit
val callback
Scheduled(40, println("x") )
case
apply
class Scheduled(val time: Int, val callback: () => Unit) { def doit = callback()}object Scheduled { def apply(time: Int, callback: => Unit) = new Scheduled(time, { () => callback })}
scala> Scheduled(1234, println("x"))res0: Scheduled = Scheduled@5eb10190 scala> Scheduled(1234, println("x")).doit x
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
class Scheduled(time: Int, cb: => Unit) { private def runCb = cb}object Scheduled { def apply(time: Int, cb: => Unit) = { val instance = new Scheduled(time, cb) Thread.sleep(time*1000) instance.runCb }}
scala> Scheduled(10, println("a")); Scheduled(1, println("b"))a b
添加回答
举报
0/150
提交
取消