【发布时间】:2019-11-03 17:45:59
【问题描述】:
我是否正确地假设 Java-Optional 与 C++17-optional 没有太多关系?
我知道 Java Optional 主要来自 Stream-API,例如:
Optional<Integer> op = Optional.empty();
op.stream().forEach(System.out::println);
我知道它也可以用作返回值(与其说是参数)。但是关于这种用法,这不适用于C++-optional,对吧?
还是又是“Monads”,理解后没人能解释的东西? C++-optional 实际上是否与 Monads 有任何关系,Java-Streams 也是如此,因此 C++--optional 是否与 Java-Optional 相当?那么,有什么可比的例子呢?
【问题讨论】:
-
C++ 不是 Java。不要假设您对一种语言的了解任何内容都适用于另一种语言。
-
如果您正在移植代码,我建议使用不同的路径:移植行为。理解 Java 代码所描述的行为并重新实现 C++ 中的行为 1:1 的代码翻译往往会得到次优结果,假设结果完全有用。
标签: java c++ java-stream monads optional