學習spark系列---scala 程式設計基礎
阿新 • • 發佈:2018-12-25
變數
var getter and setter
val getter 一旦初始化就不能賦值,鼓勵使用
資料型別
- array
array 不可變長度 arrayBuffer 可變長度, 互相轉化函式 toArray() 和 toBuffer() - list
- tuple 包含不同的元素型別 ,元組索引從1開始, 如:tuple._1
- set
- map
hashmap和treemap (a->b) 等價於 (a,b)
immutable 長度不可變
mutable 長度可變
yield
for(statement1) yield statement2建立了一個型別與原始集合相同的新集合
n to m 包括m 如1 to 5 => 1,2,3,4,5
n until m 不包括m 如 1 until 5 => 1,2,3,4
運算子優先順序
- * / %
- + -
- :
- = !
- <>
- &
- ^
- |
- all letters
- all assignment operators
控制結構表示式
- if(statement1) express1 else express2 可以作為表示式賦值 如:
var a = if (x>0) 1 else 0
- while
- for 迴圈 to unitl
左箭頭 <- 代表賦值的意思
函式的幾種寫法
命名函式
- 有返回值,有引數
def AddOne(x:Int):Int ={x+1}
- 返回值型別可以省略不寫,自動推斷
def add(x:Int) = {x+1}
- 沒有返回值 unit, =可省略
def display(s:String){println(s)}
- 沒有引數,引數表可省略, 呼叫時不能加括號
def display{println("Hello World!")}
- 一行程式碼,{}可省略
def add(x:Int)= x+1
java ++i 或者i++ 在scala是不允許使用的 可以i=i+1或者 i+=1
匿名函式
=> 左邊是引數,右邊是函式體
(x:Int) => x + 1
var add = (x:Int,y:Int)=> x+y
add(1,2)
陣列的兩種遍歷方式
for(i <- 0 to array.length-1)//index
print(array(i))
for(i <- 0 until array.length)
print(array(i))
for(a <- array) // foreach
print(a)
scala 預設使用的不可變集合scala.collection.immutable.XX
如果需要使用可變集合 須引用scala.collection.mutable.XX包