• Scala_控制结构


    控制结构

    if条件表达式

      val x = 6
     if (x>0){
       println("This is a positive number")
    }else if(x==0){
       println("This is not a zero")
    }else{
       println("This is not a positive number")
    }
    • 有一点与Java不同的是,Scala中的if表达式的值可以赋值给变量

    val y = 6
    val a = if (y  > 0) 1 else -1

    scala> val x = 1
    x: Int = 1
    scala> val z = if(x > 0) 1 else "error"
    z: Any = 1

    scala> val x = -1
    x: Int = -1
    scala> val z = if(x > 0) 1 else "error"
    z: Any = error

    scala> val x = -1
    x: Int = -1
    scala> val z = if(x > 0) 1
    z: AnyVal = ()
    scala> val z = if(x > 0) 1 else()
    z: AnyVal = ()

    while循环

    scala> var i = 9
    i: Int = 9
    scala> while (i > 0){
        | i -= 1
        | printf("i is %d " , i)
        | }
    i is 8
    i is 7
    i is 6
    i is 5
    i is 4
    i is 3
    i is 2
    i is 1
    i is 0

    scala> var i = 0
    i: Int = 0
    scala> do {
        | i += 1
        | println(i)
        | } while (i < 5)
    1
    2
    3
    4
    5

    for循环

    • 格式

    for (变量 <- 表达式) 语句块
    //其中,“变量<-表达式”被称为“生成器(generator)”
    scala> for (i <- 1 to 5) println(i)
    1
    2
    3
    4
    5
    scala> for (i <- 1 to 5 by 2) println(i)
    1
    3
    5
    • 不希望打印出所有的结果,过滤出一些满足制定条件的结 果,需要使用到称为“守卫(guard)”的表达式

    • 比如,只输出1到5之中的所有偶数,可以采用以下语句

    scala> for (i <- 1 to 5 if i % 2 == 0) println(i)
    2
    4
    • Scala也支持“多个生成器”的情形,可以用分号把它们 隔开,比如:

    scala> for (i <- 1 to 5 ; j <- 1 to 3) println(i*j)
    1
    2
    3
    2
    4
    6
    3
    6
    9
    4
    8
    12
    5
    10
    15
    • 可以给每个生成器都添加一个“守卫”,如下:

    scala> for (i <- 1 to 5 if i % 2 == 0 ; j <- 1 to 3 if j != i) println(i*j)
    2
    6
    4
    8
    12
    for推导式
    • Scala的for结构可以在每次执行的时候创造一个值,然后将包含了所有产生值的集合作为for循环表达式的结果返回, 集合的类型由生成器中的集合类型确定

    • 通过for循环遍历一个或多个集合,对集合中的元素进行“推导”,从而计算得到新的集合,用于后续的其他处理

    • 格式:

    for (变量 <- 表达式) yield {语句块}
    scala> val r = for (i <- 1 to 5 if i%2 == 0) yield {println(i); i}
    2
    4
    r: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 4)
  • 相关阅读:
    html5--6-10 CSS选择器7--伪类选择器
    html5--6-9 CSS选择器6--伪类选择器
    html5--6-8 CSS选择器5
    避开美国全球监控阴影下的问题手机,寻求新伙伴
    DMA过程分析
    混淆
    Missile:双状态DP
    Java抓取网页数据(原网页+Javascript返回数据)
    Binders 与 Window Tokens(窗体令牌)
    编程之美2013 初赛一 A
  • 原文地址:https://www.cnblogs.com/zxbdboke/p/10466242.html
Copyright © 2020-2023  润新知