2013-08-20 73 views
0

這裏的一個功能,當法律形式參數是我試圖執行代碼,斯卡拉:不是要叫誰擁有謂詞作爲參數

type Set = scala.collection.immutable.Set[Int]

定義類型的別名設置

def filter(s: Set, p: Int => Boolean): Set = Set(1,2,3)

濾波器:(S:設置,p:INT =>布爾)設置

filter(Set(1,2,3), (4 => 2 < 3))

錯誤:不是合法的形式參數 過濾器(集(3,4),(4 => 2 < 3))

我在做什麼錯?請幫忙。

+2

如果有沒有一個參數名稱,如在'過濾器(設定'x'(1,2,3 ),(x => x <3))?? – FrankPl

+1

提示:'過濾器(設置(1,2,3),4 =>(2 <2))' –

+1

它的工作FrankPI ..啊,明白了。它就像f(x)= x <3。對嗎?謝謝。請把它寫成答案。 – FireAndIce

回答

2

您的語法既不是謂詞也不是值,您不能將lambda參數命名爲'4',您不能將4傳遞給布爾值。正確語法是:

filter(Set(1,2,3), the4 => (2 < 2)) 

或許:

filter(Set(1,2,3), x => (x < 2)) 

@FrankPI said

+0

@pedrofurla你的意思是'filter(Set(1,2,3),''4'' =>(2 <2))'? –