1. 程式人生 > >Scala基礎入門 (一)

Scala基礎入門 (一)

1.Scala概述

  • 什麼是Scala
    • Scala是一種多正規化的程式語言,其設計的初衷是要整合面向物件程式設計和函數語言程式設計的各種特性。Scala運行於Java平臺(Java虛擬機器),併兼容現有的Java程式。

2.Scala編譯器安裝

  • 2.1、安裝JDK(因為Scala是執行在JVM平臺上的,所以安裝Scala之前要安裝JDK)
  • 2.2、安裝Scala
    • Windows安裝Scala編譯器
      直接解壓之後,配置環境變數即可

3.Scala基礎

  • 1.宣告變數
object VariableDemo {
  def main(args: Array[String]) {
    //使用val定義的變數值是不可變的,相當於java裡用final修飾的變數
val i = 1 //使用var定義的變數是可變得,在Scala中鼓勵使用val var s = "hello" //Scala編譯器會自動推斷變數的型別,必要的時候可以指定型別 //變數名在前,型別在後 val str: String = "itcast" } }
  • 2.常用型別
    Scala和Java一樣,有7種數值型別Byte、Char、Short、Int、Long、Float和Double(無包裝型別)和一個Boolean型別
  • 3.條件表示式
object ConditionDemo {
  def main(args: Array[String]) {
    val
x = 1 //判斷x的值,將結果賦給y val y = if (x > 0) 1 else -1 //列印y的值 println(y) //支援混合型別表示式 val z = if (x > 1) 1 else "error" //列印z的值 println(z) //如果缺失else,相當於if (x > 2) 1 else () val m = if (x > 2) 1 println(m) //在scala中每個表示式都有值,scala中有個Unit類,寫做(),相當於Java中的void
val n = if (x > 2) 1 else () println(n) //if和else if val k = if (x < 0) 0 else if (x >= 1) 1 else -1 println(k) } }
  • 4.塊表示式
object BlockExpressionDemo {
  def main(args: Array[String]) {
    val x = 0
    //在scala中{}中包含一系列表示式,塊中最後一個表示式的值就是塊的值
    //下面就是一個塊表示式
    val result = {
      if (x < 0){
        -1  
      } else if(x >= 1) {
        1
      } else {
        "error"
      }
    }
    //result的值就是塊表示式的結果
    println(result)
  }
}
  • 5.迴圈在scala中有for迴圈和while迴圈,用for迴圈比較多, for迴圈語法結構:for (i <- 表示式/陣列/集合)
object ForDemo {
  def main(args: Array[String]) {
    //for(i <- 表示式),表示式1 to 10返回一個Range(區間)
    //每次迴圈將區間中的一個值賦給i
    for (i <- 1 to 10)
      println(i)

    //for(i <- 陣列)
    val arr = Array("a", "b", "c")
    for (i <- arr)
      println(i)

    //高階for迴圈
    //每個生成器都可以帶一個條件,注意:if前面沒有分號
    for(i <- 1 to 3; j <- 1 to 3 if i != j)
      print((10 * i + j) + " ")
    println()

    //for推導式:如果for迴圈的迴圈體以yield開始,則該迴圈會構建出一個集合
    //每次迭代生成集合中的一個值
    val v = for (i <- 1 to 10) yield i * 10
    println(v)
  }
}
  • 6.呼叫方法和函式
Scala中的+ - * / %等操作符的作用與Java一樣,位操作符 & | ^ >> <<也一樣。只是有
一點特別的:這些操作符實際上是方法。例如:
a + b
是如下方法呼叫的簡寫:
a.+(b)
a 方法 b可以寫成 a.方法(b)
  • 7.定義方法
    圖片1.png

方法的返回值型別可以不寫,編譯器可以自動推斷出來,但是對於遞迴函式,必須指定返回型別

  • 8.定義函式
    圖片2.png

    方法和函式的區別
    在函數語言程式設計語言中,函式是“頭等公民”,它可以像 任何其他資料型別一樣被傳遞和操
    作,函式是一個物件,繼承自FuctionN,
    函式物件有apply,curried,toString,tupled這些方法。
    而方法不具有這些特性。如果想把方法轉換成一個函式,可以用方法名跟上下劃線的方式.
    **