Scala与Java的异同
程序员文章站
2022-06-14 22:12:37
...
1、没有基本数据类型了一切类型皆为对象
2、移除了三元表达式,使用if() else
替代
println(if(5>4) "ok" else "error")
3、移除了switch,使用模式匹配代替
4、移除了 continue,break
,使用循环守卫代替
//环守卫 if条件满足会进入循环,不满足不进入循环,类似于continue
for(i <- 1 to 10 if i!=2){
print(i)
}
5、for是可以有返回值的
//将for循环遍历到每一个值进行处理并返回
var res = for(i <- 1 to 10) yield {
i*2
}
println(res)
//Vector(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
var arr = List("hello","world","hadoop","hbase","hive","kudu","kafka")
var res2 = for(ar <- arr) yield {
ar.toUpperCase
}
println(res2)
//输出
//[HELLO, WORLD, HADOOP, HBASE, HIVE, KUDU, KAFKA]
转java的集合
import scala.collection.JavaConverters._
var list: java.util.List[String] = res2.asJava
println(list)
6、scala移除了break
语句,通过如下方式实现scala的break效果
def main(args: Array[String]): Unit = {
/**
* 在scala中break已经被移除掉了
* 如果想实现break的效果,只能使用 break函数实现(需要导入 import util.control.Breaks._)
* break函数的底层是通过抛出异常的方式来中断代码的执行,这样在执行到 break()的时候就会抛出异常,中断程序执行
* def break(): Nothing = { throw breakException }
* 但是我们并不希望,程序因此而中断,所以scala又提供了一个高阶函数用于处理该异常,
* breakable()该函数可以捕获代码块异常,并处理掉,这样我们的程序就不会中断了
* 可以将breakable()的小括号换为中括号
*/
breakable{
for (i <- 1 to 100){
if(i==10){
break()
}
println(i)
}
}
}
上一篇: 郑州一本大学有哪些学校名单?附2021录取分数线排名一览表
下一篇: 吃什么可以补锌,吃它就对了