zoukankan      html  css  js  c++  java
  • Scala入门系列(二):条件控制与循环

    条件控制与循环

    if表达式

    • 定义:if表达式是有值的,就是if或者else中最后一行语句返回的值。
      • 例如:val isAdult = if (age > 18) 1 else 0
    • 类型推断:由于if表达式是有值的,而if和else子句的值类型可能不同,此时if表达式是什么类型呢?Scala会自动取两个类型的公共父类型。
      • 如果if后没有跟else,则默认else的值是Unit,也用()表示,类似java中的void或者null。
    • 写多行if语句:可以使用{}的方式,但推荐使用:paste和ctrl + D的方式。

    终结符

    默认情况下scala不需要终结符; 因为默认一行一句,但是如果你想在一行写多句,那么必须使用; 隔断,其次可以使用{}来进行块编码。

    缩进

    官方推荐代码缩进为2个空格,因为Scala代码很容易陷入很深的嵌套层级,如果有更多空格的话代码很容易就超出屏幕右边界。

    循环

    • while do:语义与java相同
    • for:只有简易版for语句
      • 例如:var n = 10; for(i <- 1 to n) println(i)
      • 或者使用until,表示不达到上限: var n = 10; for(i <- 1 until n) println(i)
      • 也可以对字符串进行遍历,类似java的增强for循环: for (c <- "hello World") print(c)
    • 跳出循环语句
      • 没有类似于java的break语句
      • 但是可以使用bool、return或者Breaks的break函数来替代使用
    import scala.util.control.Breaks._
    breakable{
      var n = 10
      for(c <- "hello world"){
        if(n == 5) break;
        print(c)
        n -=1
      }
    }
    

    高级for循环

    • 多重for循环:九九乘法表
    for(i <- 1 to 9; j <- 1 to 9){
      if(j==9){
        println(i*j)
      }else{
        print(i*j + " ")
      }
    }
    
    • if守卫:for循环中可以添加if判断,例如:取偶数

      • for (i <- 1 to 100 if i % 2 == 0) println(i)
    • for推导式:构造集合, 类似于python中的列表解析式

    scala> var list = for(i<- 1 to 10) yield i
    list: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3, 4, 5, 6, 7, 8
    , 9, 10)
    
  • 相关阅读:
    打造基于CentOS7的xfce最简工作环境
    Linux下C程序的编辑,编译和运行以及调试
    修正 XE6 TListView 上方 SearchBok 右边的清除钮显示
    TabControl 显示彩色的图示 (XE6 Firemonkey)
    TSwitch 中文简繁显示支持(XE6 Android)
    改变 TMemo 的背景颜色 (Firemonkey)
    修正 XE5 Android 键盘三个问题
    Delphi 收藏
    展示 Popup 的使用方法
    ListView 下拉更新 (支持 Android)
  • 原文地址:https://www.cnblogs.com/LiCheng-/p/8017407.html
Copyright © 2011-2022 走看看