1. 程式人生 > >學習spark系列---scala 程式設計基礎

學習spark系列---scala 程式設計基礎

變數

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包