在Java中我可以这样做:
Runnable task = () -> { System.out.println("Task is running"); };
Run Code Online (Sandbox Code Playgroud)
但是Scala怎么来我也做不到!
val task: Runnable = () => {println("Task is running")}
Run Code Online (Sandbox Code Playgroud)
我收到编译错误!我使用的是Scala 2.11.8版.
type mismatch; found : () => Unit required: Runnable
Run Code Online (Sandbox Code Playgroud)
Ram*_*man 16
Scala版本2.12支持将lambda表达式转换为具有"单一抽象方法"(SAM)的类型,也称为" 功能接口 ",就像Java 8一样.见http://www.scala-lang.org/news/2.12.0#lambda-syntax-for-sam-types.
早期的Scala版本无法自动将lambda表达式转换为Java功能接口/ SAM类型(例如Runnable).您最有可能使用2.12之前的版本.
您提供的代码在Scala 2.12中完全正常.