相关疑难解决方法(0)

=>,()=>和Unit =>之间的区别是什么

我试图表示一个不带参数的函数并且不返回任何值(我在JavaScript中模拟setTimeout函数,如果你必须知道的话.)

case class Scheduled(time : Int, callback :  => Unit)
Run Code Online (Sandbox Code Playgroud)

不编译,说"`val'参数可能不是按名称调用"

case class Scheduled(time : Int, callback :  () => Unit)  
Run Code Online (Sandbox Code Playgroud)

编译,但必须奇怪地调用,而不是

Scheduled(40, { println("x") } )
Run Code Online (Sandbox Code Playgroud)

我必须这样做

Scheduled(40, { () => println("x") } )      
Run Code Online (Sandbox Code Playgroud)

什么也有效

class Scheduled(time : Int, callback :  Unit => Unit)
Run Code Online (Sandbox Code Playgroud)

但是以一种更加明智的方式被引用

 Scheduled(40, { x : Unit => println("x") } )
Run Code Online (Sandbox Code Playgroud)

(Unit类型的变量是什么?)我当然想要的是一个构造函数,如果它是一个普通的函数,它可以调用我调用它的方式:

 Scheduled(40, println("x") )
Run Code Online (Sandbox Code Playgroud)

给宝宝他的瓶子!

scala

147
推荐指数
2
解决办法
2万
查看次数

标签 统计

scala ×1