Scala常用代码

遍历

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 * 2
println(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,需要用额外的变量做流程控制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值