我在这里遇到编译时错误:
def fun1(item: TextMapWritable, field:String, language: String): Option[String] = {
fun2(item, field, language)
.getOrElse(fun3(item, field))
}
fun2和fun3返回一个Option [String],但是当我尝试在fun1中使用它们时,出现此错误:
可序列化类型的表达与选项字符串类型不符 斯卡拉
答案 0 :(得分:2)
您应该使用orElse
def fun1(item: TextMapWritable, field:String, language: String):
Option[String]= {
fun2(item, field, language)
.OrElse(fun3(item, field))
}
因为getOrElse
如果选项非空则返回选项的值,否则返回评估默认值的结果。
请参阅此getOrElse doc.
答案 1 :(得分:0)
这就是你想要的
def fun1(item: TextMapWritable, field:String, language: String): Option[String] =
fun2(item, field, language) orElse fun3(item, field)
原始代码的问题是getOrElse
从String
中取出了Option
,但是结果是Option[String]
,因此您想将字符串保留在Option