Scala 初學指南

特點

  • 功能強大
  • 表達能力強
  • 多範式(面向對象和函數式編程)
  • 運行在JVM平臺上
  • 優雅
  • 速度快(開發速度快,運行速度快)
  • 能融合到Hadoop 平臺。目前大數據庫系統全部運行在JVM平臺上
  • 可以無縫調用java API
  • 項目中的核心功能可以使用Scala開發,然後別人調用接口就可以
  • Scala 的編譯器可以自動推斷變量類型
  • 提供了 Scala shell

HelloScala

    /**
  * Created by 耀源 on 2016/10/28.
  */
object HelloScala {//object代表這是一個單例對象或者伴生對象
  //放置靜態方法,靜態變量,不需要new
  def main(args: Array[String]): Unit = {
    println("Hello Scala")//
  }
}

函數和方法的區別

  • 方法 def 定義。返回值可以由編譯器自動推斷,所以可以省略。但是遞歸函數不可以省略。
  • 函數定義方式
    • 匿名函數(x : Int,y : Int) => x+y
    • 普通函數 var add = (x: Int,y : Int) = > x + y 等價於 val add: (Int,Int) => Int = { (a,b)=>a+b }
    • val func : Int => String = { x => x.toString } 等價於 val func = (x: Int) => x.toString
    • val func = (x: Int,y Double) => (y,x) 返回值超過兩個時可以使用元組的方式返回。
    • val func: (Int,Double) => (Double,Int) = { (a,b) => (b,a)}
  • 區別

    • 可以作爲一個值傳到方法裏

      var r = 1 to 10
      val f1 = (x : Int) = x*10
      val f2 = (x : Int) = x+10
      
      r.map(f1)
      r.map(f2)
      r.map(_ * 100) // 匿名函數  
    • 方法調用函數

      val func = (x : Int,y : Int) => x+y
      
      def method1(f: (Int,Int) => Int) : Int = {
      f(2,6)
      }
      
      //放置靜態方法,靜態變量,不需要new
      def main(args: Array[String]): Unit = {
      println(method1(func))
      }

神奇的下劃線

  • 將方法轉換成函數
    def method(x: Int,y: Int): Int = x + y
    var func = methos _ //將一個方法變成了函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章