scala-创新互联
模式匹配
- 在jdk1.7之前,Java的 switch 关键字只可以处理原生类型(int 、short 、byte 、char)和枚举类型。在jdk1.7以后,switch新增了对String类型的处理。
scala的模式匹配则可以处理各种复杂的类型以及场景。 - 常量匹配、变量匹配、列表和元组匹配
在最后一行指令中_是一个通配符,它保证了我们可以处理所有的情况。否则当传进一个不能被匹配的值的时候,你将获得一个运行时错误。
Nil是一个空的List,定义为List[Nothing]。 - 类型匹配
case 子句支持"或"逻辑,使用|即可;
闭包
闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。
闭包通常来讲可以简单的认为是可以访问一个函数里面局部变量的另外一个函数。
比如函数: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
- isDefinedAt:判断传入的参数是否在处理范围内
- orElse : 将多个偏函数组合起来使用,效果类似case语句。
- andThen: 相当于方法的连续调用,比如g(f(x))。
- applyOrElse:它接收2个参数,第一个是调用的参数,第二个是个回调函数。如果第一个调用的参数匹配,返回匹配的值,否则调用回调函数。
偏应用函数,是指一个函数有n个参数, 而我们为其提供少于n个参数, 那就得到了一个部分应用函数。
object与class
scala 中没有 static 关键字
所以 对于一个class来说,所有的方法和成员变量在实例被 new 出来之前都是无法访问的;
scala object 中所有成员变量和方法默认都是 static 的;
所以只有object中的main方法是可以直接访问的。
scala中集合
map定义:var verMap = Map[String, String]()
map添加元素:verMap += (mapKey -> categeryName)
list定义:var listNewValue: List[String] = List()
list添加元素:listNewValue :+= mulValue
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
标题名称:scala-创新互联
网站URL:http://azwzsj.com/article/pdepd.html