参考
《Scala 编程》
Scala 解释器
直接在 cmd 中输入 scala 即可进入其解释器中进行运算
>scala
Welcome to Scala 2.12.5 (Java HotSpot(TM) 64-Bit Server VM, Java 9.0.4).
Type in expressions for evaluation. Or try :help.
scala> 1+1
res0: Int = 2
输入 1+1
输出 res0: Int = 2
, 其中依次为:
- 自动产生的或用户定义的结果名称
- 冒号(:)及表达式的类型
- 等号(=)
- 表达式经过计算的结果
变量定义
变量类型
val
, 只能进行一次永久性赋值var
, 可随时修改相应的值
Note:如果尝试给 val 变量再次赋值的话,解释器会报错
<console>:12: error: reassignment to val
定义形式
var variable: type = value
比如定义一个字符串
scala> val s: java.lang.String = "hello!"
其中,java.lang.String
是相应的 String 类,我们也可以使用简化名 String
来定义变量(常见的数据类型都有其简化名,比如 Int):
scala> val s: String = "hello!"
另外,scala 还具有类型推断的功能,一般情况下,我们可以不用定义数据类型
scala> val s = "hello!"
s: String = hello!
函数定义
函数的基本定义如下(以找两数的最大值为例):
下面几点是需要注意的:
- 函数的参数必须带上类型定义,因为 scala 不能对参数进行类型推断
- 函数的结果类型有些时候可以不定义,但在某些情况下(比如递归),是一定要说明定义的。建议最好都带上,方便阅读理解代码
- 如果函数只有一条语句,是可以省略大括号的
- 当没有返回值时,结果类型为 Unit
- 上面的函可以写成下面形式
scala> def max(x:Int, y:Int) = if(x>y) x else y
max: (x: Int, y: Int)Int
scala> max(5, 3)
res1: Int = 5
scala 脚本
其实,scala 跟 python 的执行时有点类似的,可以直接交互 shell 中进行,也可以在 脚本文件中执行程序
- 把以下代码保存在 hello.scala 文件中
println("hello,word from scala script")
- cmd 中执行命令
>scala hello.scala
hello,word from scala script
另外,在编译执行 scala 文件时,也可以传递参数,scala 会将他们保存在 args 数组中,可以使用 foreach 进行枚举遍历
args.foreach(arg: String => println(arg))
这里把函数字面量(function literal) arg: String => println(arg)
传入到 foreach 中,把上述代码放到 hello.scala 并执行
>scala hello.scala this is args
hello,word from scala script
this
is
args
显而易见,args 数组中的元素分别被 println 打印出来
Note:函数字面量,也即匿名函数,类似于 java 或 python 中的 lambda 函数
还有的就是,对相关元素,scala 一样具有推断类型的能力,加上当函数字面量只有一行且只有一个参数时,可以省略参数,代码可以精简为:
args.foreach(println)
最后
继续向 scala 的简明扼要进发
如有错误,请指出!