目录
scala可以给流程控制定义一个返回值,用各个分支返回值的公共父类作为返回值类型
这里String是一个AnyRef,Int是一个AnyVal,公共父类是Any

Scala中没有java中的 a?b:c 三元运算符,但可以用类似的方法直接实现,且可读性更强

import scala.io.StdIn
object Test_IfElse {
def main(args: Array[String]): Unit = {
println("请输入您的年龄: ")
val age: Int = StdIn.readInt()
val result: Any =
if (age >= 18) {
println("成年")
"成年"
} else if (age < 0) {
println("输入有误")
"输入有误"
} else {
println("未成年")
age
}
println(s"result: ${result}")
//等效于java中的 age>18 ? "成年" : "未成年" ,即 a?b:c
val res = if (age > 18) "成年" else "未成年"
println(res)
}
}
for 循环的使用
指定需要遍历的变量及其范围即可
object Test_ForLoop {
def main(args: Array[String]): Unit = {
//范围遍历
for (i <- 1 to 10) {
println(i + ". hello world")
}
}
}
本质是给 i 指定了一个初始值 1,调用了该Int类型的 to方法
Int.to(Int)

如果 for循环 遍历不包含边界值,可以使用 until 方法

可对集合直接进行遍历


循环守卫,作用类似于continue,不过判断为 false 时才 “continue”

step 步长问题
我们 ctrl+鼠标左键 点进to 或者until方法中

可见都调用了 Range方法,且除循环边界 end 外还可传入一个 step 的步长参数
进入Range方法或Range下的Inclusive方法


可以发现调用until或者to方法循环遍历都有三个参数,start、end和step
它们分别是起始值,结束值,步长,默认步长为1
使用 by方法 来对步长进行定义


效果如下

倒序输出问题,定义一个负的step即可
另外此时起始值必须大于结束值

本文介绍了Scala中流程控制的特性,包括如何定义带有返回值的流程控制、使用类似于三元运算符的表达式、for循环的使用,如until方法、对集合的遍历、循环守卫以及step步长的设定,包括正向和反向遍历。
587

被折叠的 条评论
为什么被折叠?



