gpt4 book ai didi

scala - Scala 中带有 getOrElse bool 默认值的选项

转载 作者:行者123 更新时间:2023-12-05 02:58:00 30 4
gpt4 key购买 nike

我有一个包含一些对的映射,我想为一个键分配一个默认值( bool 值),当我使用 getOrElse 时,键的默认值是一个字符串,我正在寻找一种方法来做到这一点一个整数或 bool 值。

例如:

val someMap= Map("key1"->"value1", "key2"->3, "key3"-> true)
//let's see if I want to get the key `key4` with a default value of false using getOrElse
val key4= someMap.getOrElse("key4", false) //which I couldn't achieve.

最佳答案

它在 scalafiddle 中的 scala 2.12 上运行良好,但不确定为什么在您的情况下不起作用: https://scalafiddle.io/sf/uzZNFH5/1

此外,您可以使用 withDefaultValue 来简化您的 map (它总是会为不存在的键返回指定的值)

val someMap:Map[String, Any] = Map("key1"->"value1", "key2"->3, "key3"-> true).withDefaultValue(false)

您还可以使用 withDefault,这使您可以将不存在的键映射到预期值。

但我仍然同意其他人的观点,即首先使用 Map[String, Any] 并不是完美的解决方案 :(。

已编辑

好的......从评论中我看到你的问题是你不能使用返回值,因为它是任何不是 bool 值。你可以这样做:

//first option
someMap.get("key4").map {
case x:Boolean => x
case _ => true //or whatever should be taken when answer is string
}.getOrElse(false)

//second option
val someMapV:Map[String, Boolean] = someMap.mapValues {
case x:Boolean => x
case _ => true //or whatever should be taken when answer is string
}.withDefaultValue(false)
//Oh... and keep in mind that mapValues is lazy... without good reason. //You should not use any side effects using it !!!


someMap("key4")

关于scala - Scala 中带有 getOrElse bool 默认值的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59459293/

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