Scala常用代码

来源:互联网 发布:linux view 编辑:程序博客网 时间:2024/05/18 03:29

遍历

var arr = Array("001a", "001b", "002a")for (a <- arr) {    print(a + " ")}println()for (i <- 0 to arr.length - 1) {    print(arr(i) + " ")}println()for (i <- 0 until arr.length) {    print(arr(i) + " ")}

过滤

如果想过滤出以”b”结尾的元素,可以这样:
for (a <- arr) {    if (!a.endsWith("b")) {      print(a + " ")    }}
其实可以更简单:
for (a <- arr if !a.endsWith("b")) {    print(a + " ")}
如果还只想要以”001”开头:
var arr = Array("001a", "001b", "002a")for (a <- arr if !a.endsWith("b"); if a.startsWith("001")) {    print(a + " ")}

嵌套循环

for (i <- 0 to 2; j <- 1 to 3 if i != j) {    print(i * 10 + j)    print(" ")}//1 2 3 12 13 21 23

构造新集合

以上的例子都只是遍历完后就释放,除此之外,还可以创建一个值去记录每一次的迭代,只要在for表达式之前加上关键字yield。
val c = Array(2, 4, 5)val result = for (elem <- c) yield elem * 2println(Arrays.toString(result)) //[4, 8, 10]

异常

抛出异常:
val half =    if (arg % 2 == 0) arg / 2    else throw new RuntimeException()
捕获异常:
try {    val a = if (false) 1 else throw new IllegalArgumentException("null")} catch {    case e: IllegalArgumentException => println(e.getMessage)    case e: Exception => println(e.getMessage)} finally {    println("finally")}
try-catch-finally也有产生值,返回的结果是,如果没有异常抛出,则对应于try字句;如果抛出异常并被捕获,则对应与相应的catch字句。如果异常被抛出但没有被捕获,表达式就没有返回值。由finally字句计算得到的值,即使有也会被抛弃。

例如,如果函数有如下定义:
     def f() : Int = try ( return 1 ) finally ( return 2 )
     def g() : Int = try ( 1 ) finally ( 2 )
调用个f()会返回2,调用g()会返回1。

match表达式

Scala的match表达式类似与Java中的switch语句。
val arg = "a"arg match {    case "a" => println("a")    case "b" => println("b")    case _ => println("default")}
Scala用”_”作为占位符表达位置值的通配符。每个case中并没有break,因为break是隐含的,即不允许从上一个case落入到下一个里面去。而且与Java的switch相比,match表达式还可以产生值。
val arg = "a"val num =    arg match {        case "a" => 1        case "b" => 2        case _ => 0    }
Scala不再使用break和continue,需要用额外的变量做流程控制。

0 0
原创粉丝点击