scala2的if
基本的模式是
if (condition) {
}
val age = 18
if (age == 18) {
println("成年了")
}
如果只有一行,可以省略 {}
val age = 18
if (age == 18)
println("成年了")
也可以之前将内容行写在if所在行
val age = 18
if (age == 18) println("成年了")
if后的()是不可以省略的哦
scala3的if
scala3开始推荐使用 if then的语法模式
val age = 17
if age == 18 then
println("成年了")
println("if之外吗?")
此时不会打印任何内容,说明第二个print语句在if的内容块之中
更好的写法
为了标记if的结束,我们一般会像下面这么写
val age = 17
if age == 18 then
println("成年了")
println("if之外吗?")
end if
增加个输入吧
加上一点交互
println("输入您的年龄:")
val scanner = new Scanner(System.in)
val age = scanner.nextInt()
if age >= 18 then
println("成年了")
println("不要干坏事")
end if
else
println("输入您的年龄:")
val scanner = new Scanner(System.in)
val age = scanner.nextInt()
if age >= 18 then
println("成年了")
println("不要干坏事")
else
println("小伙子努努力")
end if
else if ?
println("输入您的年龄:")
val scanner = new Scanner(System.in)
val age = scanner.nextInt()
if age >= 18 then
println("成年了")
println("不要干坏事")
else if age > 12 then
println("还差一点")
else
println("小伙子努努力")
end if
if then的模式,限制if后的()不是必须的了
if式的val赋值
如果是传统的Java风格,对于下面的name我们必须使用一个变量var,如果是var我们就得思考数据可变性问题,如果是val声名的呢?我们完全不用担心某个地方修改了
var name:String = ""
println("输入您的年龄:")
val scanner = new Scanner(System.in)
val age = scanner.nextInt()
if age >= 18 then
name = "成年人"
else
name = "未成年人"
end if
println(name)
使用val改写
println("输入您的年龄:")
val scanner = new Scanner(System.in)
val age = scanner.nextInt()
val name =
if age >= 18 then
"成年人"
else
"未成年人"
end if
println(name)
这一切都归功于scala的if可以视为表达式,而不是语句,如果是语句则是不具备有意义的值的
如果if中的语句块最后一行并非一个值,那么其评估的结果就是Unit
val age = 18
val result =
if age > 18 then
println("adult")
else
println("boy girl")
end if
println(result)
最后一行的打印结果位 ()
,说明了这一点