【问题标题】:Scala: build Map with pattern matchingScala:使用模式匹配构建 Map
【发布时间】:2016-02-25 14:14:32
【问题描述】:

我正在尝试像这样构建Map[String, Any]

Map(
  somevalues match {
   Some(v) => ("myvalues -> v)
   None => ???
},

  othervalues match {
   Some(v) => ("othervalues -> v)
   None => ???
},
...etc
)

我应该为 none 情况使用哪个值,因为在这种情况下我不想在地图中插入任何东西?

【问题讨论】:

  • 你的地图有哪些类型? somevaluesothervalues 分别是什么类型?
  • 为什么你的值类型是Any?不能再具体点了吗?
  • Int、String、Double,差不多。

标签: scala


【解决方案1】:

考虑

List(
  someValues match {
    case Some(v) => Some("myValues" -> v)
    case None => None
  },

  otherValues  match {
    case Some(v) => Some("otherValues" -> v)
    case None => None
  },
  ...
).flatten.toMap

或缩短:

List(
  someValues.map("myValues" -> _),

  otherValues.map("otherValues" -> _),
  ...
).flatten.toMap

【讨论】:

    猜你喜欢
    • 2014-09-30
    • 2014-01-03
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 2018-09-23
    • 2016-05-17
    • 2021-12-17
    • 2019-09-16
    相关资源
    最近更新 更多