有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (2) 个答案

  1. # 1 楼答案

    我想到了一些可能性(OTOH,我还没有看到人们真的这么说,所以他们可能有别的意思):

    1. 没有模式匹配

    2. 没有比Scala的fold或Haskell的fromMaybe更好的方法:你必须做optional.map(...).orElseGet(...)

    3. 没有一元语法

    我自己也不会把这些称为“不那么强大”,因为你可以用相应的Scala/Haskell类型来表达你所能表达的一切;这些都是简洁性/可用性方面的问题

  2. # 2 楼答案

    在大多数情况下,它们是等价的;主要区别在于Scala one很好地集成到Scala中,而Java one很好地集成到Java中

    在我看来,最大的区别是Java是一个value-based class.对JVM来说是新的东西。目前,基于值的类和常规类之间没有真正的区别,但这种区别为JVM运行时消除Java对象开销铺平了道路。换句话说,future JVM可以重写可选代码,作为如何处理空值的指令,而不是为可选对象分配内存

    Scala与value classes做了一些类似的事情,尽管它是通过在编译器中而不是在JVM中拆开类型来完成的,而且它的使用是有限的。(选项不是值类。)