栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java 8单声道

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 8单声道

仅供参考:

提出的JDK8可选类
确实满足 了Monad的三个定律。这是一个证明这一点的要点。

一个Monad所要做的就是提供符合 三个* 定律的 两个 功能。 *

两个功能:

  1. 值放在单子语境中

    • Haskell的Maybe:
      return
      /
      Just
    • Scala的选择:
      Some
    • 功能性Java的选择:
      Option.some
    • JDK8的可选:
      Optional.of
    • 在单子上下文中 应用 函数

    • Haskell的Maybe :(

      >>=
      又名
      bind

    • Scala的选择:
      flatMap
    • 功能性Java的选择:
      flatMap
    • JDK8的可选:
      flatMap

请参见上述要点,以获取有关这三个定律的Java演示。

注意:要理解的关键事项之一是 要在monadic上下文中应用函数 签名:它采用原始值类型,并返回monadic类型。

换句话说,如果您具有的实例

Optional<Integer>
,则可以传递给其
flatMap
方法的函数将具有签名
(Integer) ->Optional<U>
,其中
U
是,而不必是的值类型
Integer
,例如
String

Optional<Integer> maybeInteger = Optional.of(1);// Function that takes Integer and returns Optional<Integer>Optional<Integer> maybePlusOne = maybeInteger.flatMap(n -> Optional.of(n + 1));// Function that takes Integer and returns Optional<String>Optional<String> maybeString = maybePlusOne.flatMap(n -> Optional.of(n.toString));

您不需要任何Monad接口即可以这种方式进行编码或以这种方式进行思考。在Scala中,您不会编码到Monad接口(除非您正在使用Scalaz库…)。看来,JDK8还将使Java人员也能够使用这种
链式单子计算 风格。

希望这会有所帮助!

更新: 在此处博客有关此内容。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/496490.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号