scala3-if

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)

最后一行的打印结果位 (),说明了这一点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

singkingcho

有帮助?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值