• Scala学习随笔——控制语句


    Scala只内置了为数不多的几种程序控制语句:if、while、for、try catch以及函数调用,这是因为从Scala诞生开始就包含了函数字面量,Scala内核没有定义过多的控制结构,而是可以通过额外的库来扩展程序的控制结构。

    一、if表达式

    与其他语言相同,Scala中的if也是选择(分支),与其他的语言不同的是每个表达式都可以返回值。

    var  age = 25
    val  result = if(age > 20) "worker"  else  "student"
    println(result)
    

      

    二、while循环

    有两种形式, while(......){}  和 do{}while(......)

    Scala中while和do-while被成为循环而不是表达式,是因为它们没有返回值,返回Unit或者()

    三、for表达式

    1.for的一个基本用法与Java相似,可用于枚举集合元素

    val filesHere = (new java.io.File(".")).listFiles
    for(file <- filesHere)
        println(file)
    

    支持所有类型的集合类型

    for(i <- 1 to 4)
        println(i)
    

      

    2.过滤

    for表达式可以添加一个过滤器——在for的括号内添加一个或多个if语句。

    例如,不枚举集合中的每个元素,而是只迭代某些符合条件的元素。

    val filesHere = (new java.io.File(".")).listFiles
    for(file <- filesHere
        if file.isFile
        if file.getName.endsWith(".scala"))
            println(file)
    

      

    3.嵌套迭代

    for表示式支持多重迭代

    4.绑定中间变量

    5.生成新集合

    基本语法 : for clauses yield body  ,其中 clauses  yield 是关键字

    四、用try表达式处理异常

    1.抛出异常

    抛出异常的方式与Java中相同

    val half =
      if (n % 2 == 0)
        n/2
      else
        throw new RuntimeException("n must be even")
    

      

    2.捕获异常

    try{}catch{}

    3.finally

    finally中如果有返回值将会覆盖try中的返回值,所以在finally中应尽量避免使用return

    4.生成返回值

    五、Match表达式

    该表达式支持从多个选择中选取其一执行,类似Java中的switch

    true/false布尔表达式 match {
      case "salt" => println("pepper")
      case "chips" => println("salsa")
      case "eggs" => println("bacon")
      case _ => println("huh?")
    }  

     使用中注意以下三点:

    • 一是任何类型的常量都可以用在 case 语句中,而不仅仅是 int 或是枚举类型。
    • 二是每个 case 语句无需使用 break ,Scala不支持“fall through”。
    • 三是Scala的缺省匹配为 _ ,其作用类似 java 中的 default

    六、Scala中没有提供break和continue,但是可以使用一些方法实现break和continue的功能

    var i=0
    var foundIt=false
    while (i < args.length && !foundIt) {
        if (!args(i).startsWith("-")) {
        if(args(i).endsWith(".scala"))
            foundIt=true
        }
        i=i+1
    }
    

      

    当然,Scala 在scala.util.control 包中定义了 break 控制结构。它的实现是通过抛出异常给上级调用函数。

    import scala.util.control.Breaks._
    import java.io._
    
    val in = new BufferedReader(new InputStreamReader(System.in))
    
    breakable {
      while(true) {
        println("? ")
        if(in.readLine()=="") break
      }
    }
  • 相关阅读:
    获取程序的当前启动路径
    SuspendLayout,ResumeLayout,Layout,PerformLayout
    序列化反序列化的简单例子
    简单的异步编程入门例子
    ClickOnce的更新策略
    ubuntu update(国内升级源)
    为AptGet设置代理
    如何启用 Ubuntu 中的 root 帐号
    The Great Tunnel Debate: PBT vs TMPLS
    Traffic engineering for Ethernet: PBT vs. TMPLS
  • 原文地址:https://www.cnblogs.com/aston/p/8798654.html
Copyright © 2020-2023  润新知