Java 8 模式匹配?

标签 java lambda java-8 matching

Java 8 会像 Scala 和其他函数式程序那样支持模式匹配吗?我正在对 Java 8 的 Lambda 功能进行演示。我在这个特殊的函数式编程概念上找不到任何东西。

我记得让我对函数式编程感兴趣的是快速排序实现,尤其是与命令式编程的实现相比。

最佳答案

我想你不是在谈论在字符串上应用正则表达式的意义上的模式匹配,而是作为 applied in Haskell .例如使用通配符:

head (x:_)  = x
tail (_:xs) = xs

Java 8 本身不支持这一点,但是使用 Lambda 表达式有一些方法可以做到这一点,例如计算阶乘:

public static int fact(int n) {
     return ((Integer) new PatternMatching(
          inCaseOf(0, _ -> 1),
          otherwise(  _ -> n * fact(n - 1))
     ).matchFor(n));
}

如何实现,您将在这篇博文中找到更多信息:Towards Pattern Matching in Java .

关于Java 8 模式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11219858/

相关文章:

java - 无法将json字符串转换为java中的常规字符串数组

c# - Single Identified(on.prop, value), new时设置a.prop

非 const 字符串的 C++ lambda 到 std::function 错误

java - 用java 8重写列表的收集列表(创建集群)

java - 替代 apache xml rpc 客户端,完全受 Google App Engine for java 支持

java - 扫描仪类输入问题

java-8 - 如何在 Java 8 中使用流查找整数的最大值?

fxml - 如何在 TreeTableView 中显示行的网格线

java - JPA with Hibernate - 如果实现复合键则缺少列

python - 使用 scipy.integrate.nquad 的多重积分 - lambda 函数上的错误