在java中我可以做到这一点:
Runnable task = () -> { System.out.println("Task is running"); };
但是为什么在scala中我做不到!
val task: Runnable = () => {println("Task is running")}
我有一个编译器错误!我正在使用Scala版本2.11.8。
type mismatch; found : () => Unit required: Runnable
scala版本2.12支持使用"单个抽象方法"(SAM(,又称"功能接口"将lambda表达式转换为类型,就像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中的工作正常。