scala学习之内建控制结构->匹配(match)表达式

scala的match表达式类似于其它程序设计语言的switch语句

代码:

val firstArg = if(args.length > 0) args(0) else ""
firstArg match {
case "salt" => println("pepper")
case "chips" => println("salsa")
case "eggs" => println("bacon")
case _ => println("huh?")
}

该语句实现了从参数列表读食物名,然后打印事物配料

与java的switch相比,区别有几点:

1、任何类型的常量,都能当成scala里做比较用的样本(case),而不只是Java的case语句里面的整数类型和枚举常量,在上边这个例子里,备选项是字符创

2、在每个备选项的最后并没有break,这样可以避免一些错误产生的根源

3、最显著的差别是:match表达式也能产生值。上面的例子里,match表达式的每个备选项不但可以通过打印输出值,还可以只生成返回值而不打印,具体见下边的代码实现:

val firstArg = if(args.length > 0) args(0) else ""
val friend =
firstArg match {
case "salt" => "pepper"
case "chips" => "salsa"
case "eggs" => "bacon"
case _ => "huh?"
}
println(friend)

match表达式生成返回值并存储在friend变量里,这除了能让代码变得更短之外(至少减少了几个指令),还解开了两个原本应分离的关注点:首先是选择食物名称,其次才是打印它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值