标签:闭包 jdk bdc log efi object 模式 函数 sum
模式匹配闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。
闭包通常来讲可以简单的认为是可以访问一个函数里面局部变量的另外一个函数。
比如函数:val multiplier = (i:Int) => i * factor;factor不是形式参数,而是自由变量;这样定义的函数变量 multiplier 成为一个"闭包",因为它引用到函数外面定义的变量,定义这个函数的过程是将这个自由变量捕获而构成一个封闭的函数。
将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数。
def sum(x:Int,y:Int)=x+y,柯里化之后就是def sum(x:Int)(y:Int) = x + y。
这个函数是什么意思呢? 接收一个x为参数,返回一个匿名函数,该匿名函数的定义是:接收一个Int型参数y,函数体为x+y
偏函数不是函数,Scala中的Partia Function是一个Trait,其的类型为PartialFunction[A,B],其中接收一个类型为A的参数,返回一个类型为B的结果。
偏函数内部有一些方法,比如isDefinedAt、OrElse、 andThen、applyOrElse
偏应用函数,是指一个函数有n个参数, 而我们为其提供少于n个参数, 那就得到了一个部分应用函数。
scala 中没有 static 关键字
所以 对于一个class来说,所有的方法和成员变量在实例被 new 出来之前都是无法访问的;
scala object 中所有成员变量和方法默认都是 static 的;
所以只有object中的main方法是可以直接访问的。
map定义:var verMap = Map[String, String]()
map添加元素:verMap += (mapKey -> categeryName)
list定义:var listNewValue: List[String] = List()
list添加元素:listNewValue :+= mulValue
标签:闭包 jdk bdc log efi object 模式 函数 sum
原文地址:https://blog.51cto.com/4876017/2385342