scala高級特性

class Persion{
 var name = "ss"
 var age = 12
 def this(name:String){
 this()
 this.name = name
 }

def this(name:String,age:Int){
 this()
 this.name = name
 this.age = age
 }

}


object Persion{
	println("hello")
 	var name = "spark"
}



匿名函數:
    val fun = (content:String) => print(content)
    fun("hadoop")

高階函數:函數的參數是函數
    val hiScala = (content:String) => print(content)
    def bigData(fun:(String) => Unit,content:String) {print(content)}//高階函數
    bigData(hiScala,"scala")

    scala> def spark(fun:(String)=>Unit,name:String){fun(name)}//高階函數
    spark: (fun: String => Unit, name: String)Unit
    scala> spark((name:String) => print(name),"scala")
    scala
    scala> spark((name) => print(name),"scala")
    scala
    scala> spark( print,"scala")
    scala


    應用
    val array = Array(1,2,3,4,5,6,7)
    val res = array.map(item => item * 2)
    val filter = array.filter(item => item % 2 == 0)
    val filter = array.filter(_ % 2 == 0)

函數返回值是函數
    def fun_return(content:String) = (message:String) => print(content + " " + message)
    fun_return("scala")("spark")


閉包:當fun函數執行完後,在外部依舊能夠調用fun的變量=》函數執行完後,其內部的變量依舊能夠被外部調用,Scala內部爲其建立一個函數對象,
content做爲內部成員,其實是對函數對象的成員進行訪問
    def fun(content:String) = (message:String) => print(content + " " + message)
    fun("scala")("spark")


柯里化
    def curry(x:Int)=(y:Int) => x + y
    curry(1)(2)
    簡化
    def curry(x:Int)(y:Int) = x + y
    curry(1)(2)




val arr = Array("this is one :","this is two : ","this is three","this is four")
相關文章
相關標籤/搜索