基于用户输入,我需要在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。
答案 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