> 文章列表 > Scala编程(第四版)

Scala编程(第四版)

你知道吗? Scala是一个多面手编程语言!

为什么Scala能同时成为“脚本小王子”和“框架大管家”?它就像一个会变身的瑞士军刀,既能灵活处理小任务(比如把Java组件装进一个大拼图),又能打造大型框架(比如IntelliJ IDEA的很多插件就是用 Scala写的)。

Scala为啥这么全能?因为它把“面向对象”和“函数式编程”这对CP玩得炉火纯青!比如,Java里的1 + 2其实在Scala里其实是Int(1).+(2),这在Java里是做不到的。至于函数式编程,Scala允许把函数当“货物”一样打包带走,还能玩“无副作用”的游戏(虽然不强制啦)。

Scala和Java有多亲?他们是“同门师兄”, Scala可以直接调用Java代码,还给Java库穿上了时尚的新衣服。例如,str.toInt()这个功能在Java里只能用Integer.parseInt(str),显得特别笨拙。 为啥?因为Scala贴心地加了个“翻译官”(隐式转换),默默地把Java对象转换成更有用的形式,这可是Java想都没有想过的本事!

想用Scala,得先有Java?不一定哦!虽然大部分 Scala 项目都用到Java库,但也有纯 Scala 的库,比如 Akka。不过,会Java的朋友学Scala就更容易啦,毕竟很多概念都是相通的!

知道Scala的这些“超能力”,你是不是也想用它来解锁更多编程新姿势了呢?

Scala编程(第四版)

Scala编程

  • 可伸缩的语言
    • 面向对象与函数式编程
    • Scala优势
      • Scala是兼容的

可伸缩的语言

1、适合构建将java组件组装在一起的脚本
2、用于编写可复用组件,并讲这些组件构建成大型框架

Scala是一门综合面向对象和函数式编程概念的静态类型编程语言

面向对象与函数式编程

面向对象

和java面向对象的区别:
java是不允许对象的值单独存在的,比如基础数据类型,并且java不允许以任何对象的成员形式存在的静态字段和静态方法
scala是纯面向对象的,1+2是Int类型的「+」函数

函数式编程

首先、函数式编程中,函数是一等值的,也就是说他和整数、字符串一样,可以作为参数,也可以返回
第二,函数式编程中,函数是不应该有副作用的,只有接收入参并返回结果两种方式和外部环境通信(scala不会强制要求)

Scala优势

Scala是兼容的

Scala程序会被编译成JVM字节码,运行期性能也和Java相当,Scala可以调用Java方法,访问Java字段,从Java继承,实现java接口等等。几乎所有Scala代码都重度使用Java类库
并且,Scala会对Java类进行「再包装」,比如Scala字符串支持.toInt()方法,但是java只能Integer.parseInt(str)。Scala对于这类由于高级类库设计和互操作性之间的矛盾产生问题,采用了隐式转换的方案解决,当类型没有正常匹配或者代码选中了java类型中不存在的成员时,Scala便会尝试隐式转换

在toInt()的事例中,scala会在Java的String类中找toInt()方法,但是JavaString类并没有这个党发,不过Scala会找到一个将Java的String转换成Scala的StringOps类的隐式转换,而StringOps中定义了这样一个方法(toInt),因此当执行真正toInt方法前,上述隐式转换就会被应用