scala 简要:再拾Scala

简介: 版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/42191395

Spark 1.2 发布了,核心部分是scala写的,需要重新回顾一下Scala了,写一点札记,叫做scala简要吧。

Scala 运行于JVM之上,拥有海量类库和工具,兼顾函数式编程和面向对象。

在Scala中, 解释器就是我们喜欢的REPL,变量或者函数的类型总是写在变量或函数的后面(与java相反),数值类型的转换通过方法而不是强制类型转换,仅当同一行代码存在多条语句时才需要用分号隔开。

scala 允许自定义操作符,注意有分寸地使用,在使用scala.开头的包时,可以省去scala前缀。scala没有静态方法,类似的特性可以用单例对象,一个类对应的companion object就跟Java中的静态方法一样,使用companion object的apply方法是scala中构建对象的常用方法。

控制

在scala中,判断语句跟其他语言类似,但{}块包含一系列表达式,其结果也是一个表达式,块中最后一个表达式的值就是块的值。

在for 循环的变量之前并没有val或var的指定。该变量的类型是集合的元素类型,循环变量的作用域一直持续到循环结束。scala并没有提供break或continue语句来退出循环,替代方法如下: 1)使用Boolean的控制变量 2)使用嵌套函数——在函数中return 3)使用Breaks对象中的break方法,控制权的转移是通过抛出和捕获异常完成的,出于性能考虑,尽量避免这一机制。

for有丰富的形态,可以提供多个生成器,并带有if开头的表达式,还可以使用任意多的循环变量定义。

函数

scala中的方法对对象进行操作,而函数不是,C++中也有函数,不过在Java中智能用静态方法模拟,scala的函数不需要return,对应递归函数必须指明返回类型,可以混用未命名参数和带名参数,只要那些未命名的参数是排在前面的即可。

同样,变长参数列表很方便,通过 :_* 将值序列转换成参数序列。当变长参数类型为Object的Java方法时,需要手工对基本类型进行转换。

scala对不返回值的函数有特殊的表示法,如果函数体包含在花括号当中但没有前面的=号,那么返回类型就是Unit,这样的函数也叫过程函数。

当val 被声明为lazy时,它的初始化将被延迟加载,直到对它初次取值。每次访问延迟加载的变量,都会有一个方法被调用,以线程安全的方式检查该值是否已被初始化。

异常

scala异常的工作机制和Java或C++一样,但没有"受检"异常,捕获异常采用模式匹配的语法,不需要使用捕获的异常对象,可以用_来替代变量名。try/catch和try/finally是互补的。

目录
相关文章
|
Scala
scala 简要: Actor
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
741 0
|
Java Scala Shell
scala简要:文件访问
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
802 0
|
Scala 自然语言处理
scala简要:操作符和解析器
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
936 0
|
Scala 缓存
scala 简要:集合
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
718 0
|
Scala Java 编译器
scala简要:模式匹配
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
672 0
|
Java Scala 编译器
scala简要:注解
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/42341349 注解可以在程序的各个条目中添加信息,是插入到代码中以便有工具可以对他们进行处理的标签。
656 0
|
XML Scala 数据格式
scala 简要: xml处理
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
923 0
|
Scala
scala简要:高级函数和高级类型
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
806 0
|
Java Scala C++
scala简要:包
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
816 0
|
Java Scala
scala简要: 继承
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
682 0