如何在Scala中创建可变数量的嵌套“map”函数?

时间:2015-06-01 18:22:09

标签: scala

基于用户输入,我需要在Scala中创建可变数量的嵌套“map”函数。我怎样才能做到这一点?还有更好的方法吗?

示例1:

(xml \\ "view").map{view => println("case from user input #1")}

示例2:

(xml \\ "view").map{view => val viewEvent = (view \\ "viewEvent");
  viewEvent.map{viewEvent => println("case from user input #2")}
}

我不是在寻找如何根据输出示例#1或#2的用户输入执行switch / case语句(或if / else布尔逻辑)。

我正在寻找如何根据用户输入创建可变数量的嵌套地图语句。例如,如果用户为XML提供了另一级别的嵌套,那么我需要一个带有3个嵌套映射语句的Example#3。

1 个答案:

答案 0 :(得分:0)

您可以使用递归函数:

def op(xml: Node, selectors: List[String]): Unit = selectors match {
  case s :: ss => (xml \\ s).map(n => op(n, ss))
  case Nil => println(s"Hello from node $xml")
}

这样打电话:

op(xml, List("View")) // Case 1
op(xml, List("View", "viewEvent")) // Case 2