为什么 Scala 有自己的内置库?



我刚开始使用Scala,想知道如果Scala真的可以与Java互操作,为什么他们有自己的库,而不仅仅使用Java库?

换句话说,在Scala中编写Java中已有的相同库有什么好处吗?

接下来,两者都被转换为字节码并在JVM上运行。

如果您阅读scala文档

Scala将面向对象(OOP(和函数式编程(FP(结合在一起简洁、高级的语言。

  • 在我看来,scala获得了JVM市场,因为java在java8之前只是OO;而您可以在scala中同时执行OO+fp

  • 由于fp鼓励诸如不变性之类的思想,所以使用相同的Java库并不理想,因为Java没有提供不变性,或者没有实践

    这就是为什么您会看到工程师使用惯用的scala重新编写或移植JVM库;也称为纯fp,而不是调用不纯代码。

下面是标量不变性的例子;

scala> case class Customer (name: String)
defined class Customer
scala> val customer = Customer(name = "Stephen")
customer: Customer = Customer(Stephen)
scala> customer.name = "Lino"
<console>:13: error: reassignment to val
customer.name = "Lino"
^

java10现在提供了一些不可变的数据结构,如ListMap

使用final的java不可变示例;

jshell> class Customer { final String name = "default customer"; }
|  created class Customer
jshell> var customer = new Customer()
customer ==> Customer@887af79
jshell> customer.name = "Lino"
|  Error:
|  cannot assign a value to final variable name
|  customer.name = "Lino"
|  ^-----------^

Twist:由于java的功能越来越强大,我不知道scala会用他们的OO+FP哲学做什么

最新更新