Scala类型推断匿名函数声明

时间:2010-09-19 11:59:15

标签: scala scala-2.8 type-inference

我是Scala的初学者,我只是对Scala如何处理此代码段的类型推断感到好奇

trait Expression { .... }

def eval (binding : String => Boolean) : Expression => Boolean

我理解绑定是一个将String转换为Boolean的函数,但为什么binding同时可以声明为Expression的成员?它被隐式转换了吗?它是如何工作的?

对不起,如果我的问题有点令人困惑

非常感谢:D

2 个答案:

答案 0 :(得分:5)

正如JörgWMittag所说,这里绝对没有类型推断。

def eval (binding : String => Boolean) : Expression => Boolean

只是一个抽象方法声明(抽象,因为它没有正文)。它可以以不同的方式实现,具体取决于Expression的定义。

  

为什么同时binding可以声明为Expression

的成员

鉴于您发布的内容,它不能。

答案 1 :(得分:4)

我认为关键点在于,函数eval返回一个函数,其类型为Function2[Expression, Boolean]

更清楚地说:

def eval (binding : String => Boolean) : (Expression => Boolean)

bindingExpression之间没有直接关系。