基本类型
大部分都能隐式转换,Byte、Short需要显式指定
1 | val little : Byte = 3 |
char、String支持\转义
1 | val a = 'a' //char = 'a' |
带小数点的默认为Double,以F结尾表示Float
1 | val pi = 3.14F |
定义函数
1 | var fun = (v : Int) => v + 1 //匿名函数赋值给一个变量 |
控制结构
if表达式
1 | val filename = |
while循环
1 | //计算最大公约数 |
do…while
1 | var line = "" |
for表达式
1 | for( i <- 1 to 4) |
try…catch
1 | def g() : Int = { |
基本数据结构
数组Array:可修改,通过括号()来引用
1 | val greeting = new Array[String](2) |
列表List:只读
1 | val numbers = List(1,2,3,4) |
元组Tuple:只读,与List类似,可以是不同元素,下标从1开始
1 | val hostPort = ("localhost",80) |
集合Set:只读,没有重复的元素
1 | Set(1,1,2) |
映射Map:
1 | val m = Map(1 -> "one",2 -> "two") |
定义class
1 | class Hello( _a : Int) { |
继承
1 | class Hello2(a : Int) extends Hello(a) { |
单实例对象
scala 不支持static变量、成员,但提供了单例对象,用object来定义
1 | object Timer { |
单例对象可以和类具有相同的名字,放在同一个源文件,可以相互访问彼此的private方法和变量。
1 | class Bar(foo : String) |
匿名函数
1 | (x:Int) => x+1 |
匿名函数作为参数
1 | val someNumbers = List(1,3,-2,0) |
函数嵌套
1 | import scala.io.Source |
部分应用函数
函数的参数可以分步提供
1 | def adder(m : Int,n : Int, z : Int) : Int = m + n + z |
柯里化函数currying
1 | //非柯里化函数 |
包
1 | package org.scala.example |
模式匹配
1 | times match{ |
scala应用程序
入口:单实例对象,内部必须有一个main方法,main有且仅有一个Array[String]的参数,并且返回Unit
1 | // Hello.scala |
运行:
1 | > scala Hello scala spark |
闭包
1 | scala> var more =1 |