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")