【问题标题】:How to create variable numbers of nested "map" functions in Scala?如何在 Scala 中创建可变数量的嵌套“映射”函数?
【发布时间】:2015-06-01 18:22:08
【问题描述】:

根据用户输入,我需要在 Scala 中创建可变数量的嵌套“映射”函数。我怎样才能做到这一点?有没有更好的办法?

示例 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")}
}

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

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

【问题讨论】:

  • 可能是某种部分应用的功能?

标签: scala


【解决方案1】:

你可以使用递归函数:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 2011-09-06
    相关资源
    最近更新 更多