2010-09-19 51 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之間沒有直接的關係。