可选择将项目添加到 Scala 映射
我正在寻找解决这个问题的惯用方法。
我正在构建一个 val
Scala(不可变)映射,并希望有选择地添加一个或多个项目:
val aMap =
Map(key1 -> value1,
key2 -> value2,
(if (condition) (key3 -> value3) else ???))
如何在不使用 var
的情况下完成此操作?什么应该取代 ???
?使用 +
运算符更好吗?
val aMap =
Map(key1 -> value1,
key2 -> value2) +
(if (condition) (key3 -> value3) else ???))
一种可能的解决方案是:
val aMap =
Map(key1 -> value1,
key2 -> value2,
(if (condition) (key3 -> value3) else (null, null))).filter {
case (k, v) => k != null && v != null
}
这是最好的方法吗?
I am looking for an idiomatic solution to this problem.
I am building a val
Scala (immutable) Map and would like to optionally add one or more items:
val aMap =
Map(key1 -> value1,
key2 -> value2,
(if (condition) (key3 -> value3) else ???))
How can this be done without using a var
? What should replace the ???
? Is it better to use the +
operator?
val aMap =
Map(key1 -> value1,
key2 -> value2) +
(if (condition) (key3 -> value3) else ???))
One possible solution is:
val aMap =
Map(key1 -> value1,
key2 -> value2,
(if (condition) (key3 -> value3) else (null, null))).filter {
case (k, v) => k != null && v != null
}
Is this the best way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
类似的事情怎么样
How about something along the lines of
另一种可能性是利用
Option
的可迭代性质。非空值
o
:空值
o
:Another possibility is to take advantage of the iterable nature of
Option
.A non-empty value
o
:An empty value
o
:您可以直接添加到地图:
You can add directly to the map: