_ 必须遵循方法;不能跟随 () => 布尔值

_ must follow method; cannot follow () => Boolean

您好,我正在尝试 运行 我的代码,我仔细检查了所有内容。它应该可以工作,我的意思是 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

class Property(val name: String, val func: () => Boolean)

我在这里遗漏了什么?

这里不需要下划线。仅当您想通过 eta 扩展将方法转换为函数时才需要下划线。这在这里不是必需的,因为 formula 已经是 () => Boolean 类型的函数,这正是 Property class 正在寻找的。

def property(propName: String)(formula: () =>  Boolean)  {
    properties += new Property(propName, formula)
}

就像警告说的那样。 _ 必须遵循一个方法才能把它变成一个函数。 formula 已经是一个函数。所以你可以像这样传递它:

properties += new Property(propName, formula)