【发布时间】:2015-01-10 07:57:07
【问题描述】:
我是 Scala 的新手,在阅读一些教程和文档时,我尝试定义自定义控制结构。
所以我尝试实现一个隐式类MyBoolean,它提供了一个带有两个参数列表的? 方法。第一个参数是在MyBoolean 为真时执行的块,第二个在MyBoolean 为假时执行。
以下是生成的控制结构的语法示例:
true ? {println("true")} {println("false")};
所以本质上只是一个简单的 if-else 语句,作为布尔方法实现。
这是我的实现:
object Test extends App {
implicit class MyBoolean(val value: Boolean) {
def ? (body1: => Unit)(body2: => Unit){
if (value) body1;
else body2
}
}
override def main(args: Array[String]): Unit = {
// true ? {println("true")} {println("false")}; //--> compiler error
true.? {println("true")} {println("false")}; // works fine...
}
}
我面临的问题是使用预期的语法(在 Eclipse 中)出现以下编译器错误:
方法缺少参数?在 MyBoolean 类中;按照这个方法 如果您想将其视为部分应用的函数,请使用 `_'
仅当我在方法 ? 之前显式添加点 . 时才有效。
在调用方法时,点在 Scala 中不应该是可选的吗?我有什么遗漏吗?
【问题讨论】:
标签: scala