2010-09-19 100 views
1

我在斯卡拉初学者,我只是好奇斯卡拉如何处理的类型推断此代码段Scala的类型推断匿名函数声明

trait Expression { .... } 

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

我明白,结合是一个函数,转换StringBoolean,但为什么binding同时可以声明为Expression的成员?它是否被隐式转换?它是如何工作的?

很抱歉,如果我的问题是有点混乱

非常感谢:d

+4

你能更具体一点吗?你在说什么类型推理?在你发布的代码中没有类型推断,所有类型都被明确声明。 – 2010-09-19 12:13:24

回答

5

是绝对没有的类型推断怎么回事,因为约尔格W¯¯米塔格说。

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

是一个简单的抽象方法声明(抽象因为它没有正文)。根据Expression的定义,它可以以不同的方式实施。

为什么binding同时也被声明为的Expression

它不能给你贴正是一员。

4

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

它更明确地说:

bindingExpression之间没有直接的关系。