0

我试图通过将每个元素映射到数组中(元素,它匹配的正则表达式)将字符串数组转换为映射数组(字符串,字符串)。我的代码如下,但是当我运行它时它会抛出错误。

var articles:Array[Map[String,String]] = rawArticles map(x => x, x match {
    case ArticleRE(id) => id
    case _ => " " 
}
)).toMap

rawArticles 是原始数组, ArticleRE 是我匹配的正则表达式。

4

2 回答 2

1

在我看来,您的问题是试图在不是 Seq [(A, B)] 的东西上调用 toMap。假设像这样的一个小例子(它在 Scala 2.10 中编译得很好,但有一些变化):

val rawArticles = Array("articleOne", "articleTwo", "articleThree")
val articleRE = "(.*)".r
/* some place holder value for no match */
val noMatch = ""

val articles = rawArticles map { x => Map(
  x -> x match {
    case articleRE(id) => (id, articleRE.toString)
    case _             => ("", noMatch)
  })
}

我认为您的问题是尝试转换不是元组序列的序列,您也可以直接case在 Map 中使用,因为 Map 可以采用PartialFunction.

于 2013-02-07T04:49:33.070 回答
0

如果您确定所需的类型,那么这应该有效:

var articles = rawArticles.map(x => Map(x -> (x match {
  case ArticleRE(id) => id
  case _ => " "
})))  
于 2013-02-07T07:31:37.157 回答