我刚开始学习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