学习spark系列---scala 编程基础

来源:互联网 发布:如意时时彩源码 编辑:程序博客网 时间:2024/06/05 20:53

变量

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 + 1var add = (x:Int,y:Int)=> x+yadd(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包