Scala 简介

1. 概述

Scala 是高层级的,函数式,基于 JVM,完美调用 Java 的编程语言。
其主要特点就是它是一门函数式语言。

语法上,Kotlin 借鉴了其大部分的语法,所以体现出和 Kotlin 非常相似的特征。

同时,由于基于 JVM,所以类型系统和 Java 没有多大区别。

2. 什么是函数式语言

函数式语言的两大理念:

  1. 函数也是值,可以作为参数,也可以保存在变量中,与其他类型同级
  2. 函数只应该接受参数输入,并输出返回值,不应该具有其他副作用

3. 没有分号

这里需要说的一个问题是,虽然 Scala 没有分号;

但是当你写长表达式的时候可能会有问题:

1
2
someLongExpression
+ someOtherExpression

上面的语句会被隐式加上分号:

1
2
someLongExpression;
+ someOtherExpression

这样显然是不符合我们的实际意图的,解决办法有两个:

  1. 使用括号

    1
    2
    (someLongExpression
    + someOtherLongExpression)
  2. 将操作符放在行尾

    1
    2
    someLongExpression +
    someOtherExpression

分号推断的规则为,除非以下情况,否则行尾将会被认为是一个分号:

  1. 行尾由一个不能合法作为行尾的字符结束,如句点(.) 和中缀操作符 (+-)

  2. 下一行开始于不能作为语句开始的字

  3. 行结束于括号(()) 和 方括号 ([]) 之中

    由于括号中不能容纳多个语句,所以,它之中的行不可能是一个逻辑行

4. 面向对象

Scala 中所有东西都是 对象

操作符实际上是对象的 方法

5. 变量定义

语法上和 Kotlin 无多大差别

1
var x: Int = 0

6. 函数定义

1
2
3
4
def max(x: Int, y: Int): Int = {
if (x > y) x
else y
}

有趣的是,Scala 中,函数定义需要一个等号

这意味着,函数实际上是一个 变量,而函数体实际上是一个 返回值的表达式

同时,函数体 没有 return,这主要是因为函数体是一个 表达式,而一个表达式理应返回其计算得到的值。

这正好体现了函数式编程的思想,函数是一个值,函数体是一个表达式。

7. 使用函数式风格

Scala 程序员在解决问题时,应该优先考虑函数式风格而非指令式风格。

简单的判断标准有:

  1. 尽量使用 val 解决问题

    使用 var 会让你的 编码层级变低,而函数式编程的一个重要作用就是使你的视野聚焦在高层级中。

  2. 尽量避免定义返回 Unit 的函数

    函数式编程一个理念就是函数体是表达式,而返回 Unit (Java 中的 void) 的函数一般来说都具有 副作用 (即函数做了不是生成返回值的工作)

  • 本文作者: Wafer Li
  • 本文链接: https://wafer.li/Scala/Scala 简介/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
0%