gpt4 book ai didi

ruby - Scala 中的干净异常处理

转载 作者:数据小太阳 更新时间:2023-10-29 08:22:58 24 4
gpt4 key购买 nike

在 Ruby 中,我经常喜欢使用以下函数处理集合中的空值:

def nilstuff(a,stuff="")
if(a.nil?)
return stuff
else
return a
end
end

在 Scala 中有一个烦恼,即集合中的空值会抛出异常,而不是 nil:

val myMap = Map[String, String]()
myMap += ("Apple" -> "Plant")
myMap += ("Walrus" -> "Animal")
println(myMap("Elephant"))
//Exception in thread "main" java.lang.ExceptionInInitializerError
// at MyProgram.main(MyProgram.scala)
//Caused by: java.util.NoSuchElementException: key not found: Elephant

有没有办法在 Scala 中创建类似的函数来处理异常并返回“东西”?

println(missing_stuff(myMap("Elephant"),"Unknown"))

最佳答案

您可以将默认值添加到您的 Map:

scala> import scala.collection.mutable.Map
import scala.collection.mutable.Map

scala> val myMap = Map[String, String]().withDefaultValue("Unknown")
myMap: scala.collection.mutable.Map[String,String] = Map()

scala> myMap("foo")
res0: String = Unknown

另一个选项是 MapgetOrElse 方法。

或者对 get 的结果应用模式匹配:

myMap.get("foo") match {
case Some(value) => useAsDesired(value)
case None => useAsDesired("Unknown")
}

最后一个可能是您标题中所谓的“干净的异常处理”的最通用的解决方案。

关于ruby - Scala 中的干净异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23070833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com