1. 程式人生 > >大數據入門第二十天——scala入門(二)scala基礎

大數據入門第二十天——scala入門(二)scala基礎

alt turn class 推斷 inf 循環 轉換 使用 mda

一、基礎語法

  1.變量類型

  技術分享圖片

  // 上表中列出的數據類型都是對象,也就是說scala沒有java中的原生類型。在scala是可以對數字等基礎類型調用方法的。

  2.變量聲明——能用val的盡量使用val!!!

  //使用val定義的變量值是不可變的,相當於java裏用final修飾的變量
    val i = 3
    //使用var定義的變量是可變得,在Scala中鼓勵使用val
    var j = "hello"
    //Scala編譯器會自動推斷變量的類型,必要的時候可以指定類型
    var k: String = "world"

  3.條件表達式

    常規判斷

 val i = 10
    if (i < 100) {
      println("i<100")
    } 
 //支持混合類型表達式,將結果返回給變量
 val z = if (x > 1) 1 else "error"

  4.塊表達式

 //在scala中{}中課包含一系列表達式,塊中最後一個表達式的值就是塊的值
    //下面就是一個塊表達式
    val result = {
      if (x < 0){
        -1
      } else if(x >= 1) {
        
1 } else { "error" } }

  5.循環

  技術分享圖片

  to是閉區間;until是左閉右開

//for(i <- 表達式),表達式1 to 10返回一個Range(區間)
    //每次循環將區間中的一個值賦給i
    for (i <- 1 to 3) {
      println(i)
    }

    //for(i <- 數組)
    for (i <- Array(1,3,5)) {
      println(i)
    }

    //高級for循環
    
//每個生成器都可以帶一個條件,註意:if前面沒有分號 for (i <- 1 to 3; if i > 2) { println(i) } //for推導式:如果for循環的循環體以yield開始,則該循環會構建出一個集合 //每次叠代生成集合中的一個值 val j = for (i <- 1 to 3) yield i * 2 println(j)

  6.方法/函數聲明

    方法

def functionName ([參數列表]) : [return type]
def m1(x: Int, y: String): String = {
    // 可以省略return,編譯器會自動推斷
    x + y
  }

    函數(有點兒像拉姆達表達式)

 val f = (x:Int) => 2*x

  在函數式編程語言中,函數是“頭等公民”,它可以像任何其他數據類型一樣被傳遞和操作

  結合Java8中拉姆達表達式,還是闊以理解的

def m1(f: (Int, Int) => Int): Int = {
    f(1,2)
  }
  val f = (x:Int, y:Int) => x +y

  m1(f)

    方法與函數的轉換:

def m1(x:Int, y:Int): Int = {
    x + y
  }
  // 使用下劃線進行方法與函數的轉換
  val f = m1 _

    使用的話,例如Java8中的集合的使用,list.map(),裏邊可以傳入一個拉姆達表達式

大數據入門第二十天——scala入門(二)scala基礎