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

时间:2016-11-07 20:56:05

标签: scala anonymous-function

您好我正在尝试运行我的代码,我仔细检查了一切。它应该工作,我的意思是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)

我在这里失踪的是什么?

2 个答案:

答案 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)