scala中多个参数的模式匹配

scala中多个参数的匹配守卫scala中强大且简洁的模式匹配常用于各种逻辑判断场景。我们常用的模式匹配场景一般如下:val x = 1val str = x match { case 0 => "我是0。" case 1 => "我是1。" case _ => "我是谁?"}此时 str 的值只决定于对 x 的逻辑判断。但很多业务场景中,某些量的赋值决定于多个值,此时我们需要借用匹配守卫:val x = 1val y = 2val str =
摘要由CSDN通过智能技术生成

scala中多个参数的匹配守卫

scala中强大且简洁的模式匹配常用于各种逻辑判断场景。

我们常用的模式匹配场景一般如下:

val x = 1
val str = x match {
   
    case 0 => "我是0。"
    case 1 => "我是1。"
    case _ => "我是谁?"
}

此时 str 的值只决定于对 x 的逻辑判断。

但很多业务场景中,某些量的赋值决定于多个值,此时我们需要借用匹配守卫:

val x = 1
val y = 2
val str = x match {
    // y match ...
    case 1 if y == 1  => "我是0。"
    case 1 if y == 2  => "我是1。"
    case _ => "我是谁?"
}

此处无论是写成 x match … 或者 y match … 代码都能行。

但这种写法并不雅观,逻辑判断中明明需要两个或者更多的值,为何只需要填入一个?

其实当我们使用 case _ if … 时,用什么 match 已经无所谓,因为 if 后面的参数会默认从全局变量中寻找。

那么此时我们可以将代码改写成:

val x = 1
val y = 2
val str = AnyRef match {
    
    case _ if x == 1 && y == 1  => "我是0。"
    case _ if x == 1 && y == 2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值