您好我正在尝试运行我的代码,我仔细检查了一切。它应该工作,我的意思是IDE不会发出任何警告。但是当它正在编译时我收到了这个错误
Error:(20, 40) _ must follow method; cannot follow () => Boolean
properties += new Property(propName, formula _)
这是导致此错误的代码部分
def property(propName: String)(formula: () => Boolean) {
properties += new Property(propName, formula _)
}
这是属性类
class Property(val name: String, val func: () => Boolean)
我在这里失踪的是什么?
答案 0 :(得分:4)
这里不需要下划线。只有在想通过eta-expansion将方法转换为函数时才需要下划线。这不是必需的,因为formula
已经是类型() => Boolean
的函数,这是Property
类正在查找的内容。
def property(propName: String)(formula: () => Boolean) {
properties += new Property(propName, formula)
}
答案 1 :(得分:3)
就像警告说的那样。 _
必须遵循一种方法将其转换为函数。 formula
已经是一个功能。所以你可以像这样传递它:
properties += new Property(propName, formula)