在以下代碼中的過濾器代碼被提取到本地VAL:如何使用過濾器的功能的方法參數
val filterFunc = (x:VO) => x.getVal().equalsIgnoreCase("45")
我然後可以通過這個成濾波器函數,如下所示:
.filter(filterFunc)
但如果.filter函數是一個方法內過濾器的方法之外定義我需要的是這樣的:
def myMethod(p: A => Boolean) = {
.filter(p)
}
p: A => Boolean
是.filter
方法的方法簽名的一部分。上面的代碼不會編譯,因爲沒有設置類型A.如何更新代碼,使方法myMethod
接受過濾器定義作爲其參數之一,然後在.filter
方法內運行此代碼?
編輯:
當我做出改變:
def myMethod[A](p: A => Boolean) = {
.filter(p)
}
我收到線.filter(p)
錯誤:
的錯誤是:
type mismatch; found : A => Boolean required: VO => Boolean
如果您知道正在運行過濾的集合的類型,爲什麼不將p type定義爲'SomeKnownType => Boolean'? – 2013-04-30 14:54:01
@ om-nom-nom是的,如果添加您的評論回答不適用 – 2013-04-30 15:23:06
如果您需要更通用的解決方案,您可以添加泛型類型到您的方法簽名'def myMethod [A](p:A => Boolean) ' – parsons 2013-04-30 17:54:39