zoukankan      html  css  js  c++  java
  • Scala学习笔记——内建控制结构

    Scala的内建控制结构包括:if、while、for、try、match和函数调用

    1.if表达式

        //常见的写法
        var filename = "name"
        if (!args.isEmpty)
          filename = args(0)
    
        //比较简洁的写法
        var filename1 =
          if (!args.isEmpty) args(0)
          else "name"
    
        //更简洁的写法,不要有中间变量
        println(if(!args.isEmpty) args(0) else "name")
    

    2.while循环,while循环和其他语言的一样,有while和do while

      Scala中对再次赋值语句的返回值是Unit,比如下面这个例子

    3.for表达式

        //列出当前目录的文件和文件夹
        val filesHere = (new java.io.File(".")).listFiles
    
        for (file <- filesHere)
          println(file)
    
        //打印1到4
        for (i <- 1 to 4)
          println(i)
    
        //打印1到3
        for (i <- 1 until 4)
          println(i)
    
        //for循环中的过滤功能
        for (file <- filesHere if file.getName.endsWith("project"))
          println(file)
    
        //for循环中的过滤功能,多个条件用;号分隔
        for (file <- filesHere
             if file.isFile;
             if file.getName.endsWith("sbt")
        ) println(file)
    
        //嵌套枚举
        for( a <- 1 to 3; b <- 1 to 3){
          println( "Value of a: " + a );
          println( "Value of b: " + b );
        }
    
        //for循环采用yield,可以从存储中返回for循环中的变量的值,输出List(1, 2, 4, 5, 6, 7)
        val numList = List(1,2,3,4,5,6,7,8,9,10)
        System.out.println(
          for{
            a <- numList if a != 3; if a < 8
          }yield a
        )
    

    4.使用try表达式处理异常

       抛出异常

    //抛出异常
      def isEven(n : Int): Unit ={
        val half =
          if (n % 2 == 0) n / 2
          else throw new RuntimeException("n必须是偶数")
      }
    

       捕获异常,finally语句

      val file = new FileReader("input.txt")
        try {
          //使用文件
        } catch {
          //捕获异常
          case ex: FileNotFoundException =>
          case ex: IOException =>
        } finally {
          //确保文件关闭
          file.close()
        }
    

       catch子语句的返回值

    //try-catch-finally语句的返回值
      def urlFor(path:String) =
        try{
          new URL(path)
        }catch{
          case e:MalformedURIException => new URL("www.scala-lang.org")
        }
    

      避免使用finally子句返回值

     

    5.匹配(match)表达式

      Scala的match表达式类似于switch语句,其中 _ 表示其他的情况

      match表达式中的每一个备选项中break是隐含的,也就是不允许从一个备选项中落到下一个备选项中

        //匹配表达式
        val firstArg = if (args.length > 0) args(0) else ""
        firstArg match {
          case "1" => println("A")
          case "2" => println("B")
          case "3" => println("C")
          case _ => println("D")
        }
    

    6.Scala中不再使用break和continue

    可以用if替换每个continue,用布尔变量来替换每个break

  • 相关阅读:
    iis 配置域名访问
    js将base64做UrlEncode转码
    vue-router 刷新当前路由
    iview default-file-list 动态赋值不显示
    vue2.0 axios 登录post请求自动读取Set-Cookie设置
    iis 使用主机名配置需注意
    【LeetCode.1】 求两数之和
    【Docker学习笔记】Docker常用命令学习
    【Docker学习笔记】Docker基本组成与安装
    微信小程序对接七牛云 上传多张图片、预览、删除 (测试可用)
  • 原文地址:https://www.cnblogs.com/tonglin0325/p/6666622.html
Copyright © 2011-2022 走看看