我剛開始學習scala,也許我有點野心。我想將String
映射到從String
到Boolean
的函數。不幸的是,我並不瞭解我從編譯器得到的反饋。下面是代碼:斯卡拉函數圖
class StdRead {
def read(key : Array[Int], value : Array[Int],seperator : Array[Char],
filter : Map[Int, String => Boolean], write : String => Unit) {
for(ln <- stdin.getLines) {
val inarr = ln split seperator
for(i <- key) {
val func = filter get i //func : Option[(String) => Boolean]
val f = func getOrElse Unit //f : java.lang.Object
val res = func(inarr(i)) //Error, doesn't work
}
//more stuff
}
}
第一,爲什麼我得到一個Option
,是唯一的方式來訪問該功能。其次,getOrElse爲什麼返回一個對象?難道這不是我可以用來調用函數的東西嗎?如果有人能給我一個簡單的例子來說明我在這裏需要做什麼,那將是非常棒的。
在此先感謝。
順便說一句,它是「sepArator」,而不是「sepErator」。 – 2011-03-24 20:34:36
@ DanielC.Sobral有些人有不同的文化,我認爲你的文化是事實上的,它是以民族爲中心的。就像OP一樣,我也是來自有時使用E形式而不是A形式的文化。 – bharal 2013-07-18 15:17:22
@bharal對不起,如果你有這種感覺。我找不到任何字典顯示「分隔符」是正確的拼寫。我看不出有什麼理由不幫助其他人改善拼寫錯誤。你不應該因爲幫助別人而責備我,你應該幫助我,通過給出這些拼寫和參考文獻的實際例子來證實這確實是對你的文化的有效拼寫,而不是你的錯誤。 – 2013-07-19 18:01:38