Scala-part1
变量不能改变为它指定的类型,所以不能将一个变量重新赋值为类型不兼容的数据。
1 | val x: <type> = xxx |
- 类型转换:
scala
不允许从较高等级类型自动转换到较低等级类型。
1 | scala> val l: Long = 20 |
因为每一个数据类型都是一个类,可以有很多方法,这里用toInt
转换;
1 | scala> val i: Int = l.toInt |
字符串
1 | scala> val signature = "With Regards, \n Your friend" |
1 | scala> val greeting = "Hello, " + "World" |
1 | scala> val approx = 355/113f |
字符串內插
scala的字符串內插记法是在字符串的第一个双引号前面加一个“s”前缀,然后用💲指示外部数据的引用。
1 | scala> println(s"Pi appromimate is : $approx.") |
${xx}
: xx是非字字符如算式,或当引用的xx与周围文本无法区分时使用。
1 | scala> s"How doo you like them ${item}s?" |
- 用
r
操作符把字符串转换为正则表达式类型;
1 | //字符串 |
Unit
字面量是一对空的小括号(),Unit
类型通常定义函数与表达式。- 类似C中的void关键字。
1 | scala> val nada = () |
- 其他:
1 | scala> 5.asInstanceOf[Long] |
元组
1 | scala> val info = (5, "Koben", true) |
表达式
表达式可以返回数据而不修改现有数据,这就允许使用不可变数据,是函数式编程的关键概念。
- 表达式块:块中的最后一个表达式作为整个表达式块的返回值。
1 | scala> val max = {val x = 20 |
匹配表达式
1 | //expression match |
- 通用模式匹配
- 值绑定(变量绑定):把匹配表达式的输入绑定到一个局部值。
1 | scala> val status = ms match{ |
2.下划线_
匹配:
1 | scala> val status = message match{ |
循环
yield
关键字:如果表达式制定了这个关键字,调用的所有表达式的返回值将作为一个集合返回。
1 | scala> for (day<-1 until 5) print(s"Day : $day ") |
- 多重循环:
1 | scala> for{ x <- 1 to 2 |
- 值绑定+for循环
1 | scala> val mi = for (i <- 0 to 8; pow = 1 << i) yield pow |
do/while
1 | scala> do println(s"Here I am, x = $x") while (x > 0) |