Scala 如何调用getOrElse+;弗雷奇

Scala 如何调用getOrElse+;弗雷奇,scala,scala-collections,Scala,Scala Collections,假设我有一个case类,上面有选项[Map[String,String],我想迭代抛出它 此代码在Scala2.13中工作,但在Scala2.11中构建失败 some.getOrElse(None).foreach { case (key: String, value: String) => if true doSomething } 它表示,无法解析每个 如何修复此问题?它在2.13(或2.12)上无法编译,因此您的代码显然存在问题 我认为你想做的是: some.map(_.map

假设我有一个case类,上面有选项[Map[String,String],我想迭代抛出它

此代码在Scala2.13中工作,但在Scala2.11中构建失败

some.getOrElse(None).foreach {
case (key: String, value: String) =>
  if true doSomething
}
它表示,
无法解析每个

如何修复此问题?

它在2.13(或2.12)上无法编译,因此您的代码显然存在问题

我认为你想做的是:

some.map(_.map {
  case (key: String, value: String) =>
    ???
})

如果
some
None
,它将返回
None
,否则它将调用
map
上的
map
,并在
some(?)
中返回结果,因为它在2.13(或2.12)上没有编译,所以代码显然存在问题

我认为你想做的是:

some.map(_.map {
  case (key: String, value: String) =>
    ???
})

如果
some
None
,它将返回
None
,否则它将调用
map
上的
map
,并在
some(?)
中返回结果,为什么不默认为空映射

some.getOrElse(Map.empty()).foreach {
case (key: String, value: String) =>
  if true doSomething
}

为什么不默认为空映射

some.getOrElse(Map.empty()).foreach {
case (key: String, value: String) =>
  if true doSomething
}

some.getOrElse(None)
相当于什么都不做。如果选项为空,会发生什么?什么都不做?另外,您确定想要一个
forach
可能是一个
map
或其他高级函数更好?为什么一些.getOrElse(None)相当于什么都不做?一些不是一些()对象是我自己的类。我想避免None。get-exeption-如果选项包含None-返回None。否则迭代抛出映射。
getOrElse
获取值或默认值,如果它是None,那么是的,这实际上与什么都不做不一样,更糟糕的是,因为你会使用Any类型的值。也许你想要的是
opt。map{map=>map.map{case(key,value)=>???}
谢谢!你说得对。
some.getOrElse(无)
相当于什么都不做。如果选项为空,会发生什么?什么都不做?另外,您确定要使用
forach
可能是
map
或其他高级函数更好?为什么有些.getOrElse(None)相当于什么都不做?有些不是some()对象是我自己的类。我想避免None。get-exeption-如果选项包含None-返回None。否则迭代抛出映射。
getOrElse
获取值或默认值,如果它是None,那么是的,这实际上与什么都不做不一样,更糟糕的是,因为你会使用Any类型的值。也许你想要的是
opt。map{map=>map.map{case(key,value)=>???}
谢谢!你说得对。谢谢!它确实有效,但我不明白为什么不编译?code:谢谢!它确实有效,但我不明白为什么不编译?code:这是我的要求。Idk为什么,但在Scala 2.13中我写了getOrElse(无).foreach和它是有效的。这就是我要求的。Idk为什么,但在Scala 2.13中,我写了getOrElse(无)。foreach和它是有效的。