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

时间:2018-07-26 05:23:32

标签: java scala functional-programming

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

换句话说,用Scala编写与Java已经可用的相同的库有什么好处?

最后,这两个代码都转换为字节码并在JVM上运行。

1 个答案:

答案 0 :(得分:3)

如果您阅读scala documentation

  

Scala将面向对象(OOP)和功能编程(FP)结合在一起   简洁的高级语言。

  • 在我看来,scala进入了JVM市场,因为在java8之前,java一直只是OO。而您可以同时在Scala中执行OO + fp。

  • 由于fp鼓励采用不变性之类的思想,因此使用相同的Java库并不理想,因为Java不提供不变性或未实践

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

这里是scala不变性的例子;

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哲学?