Scala Pattern Match之Variable Argument Lists

Scala Pattern Match之Variable Argument Lists

关于可变参数列表http://my.oschina.net/xinxingegeya/blog/617359

这里主要讲模式匹配之参数列表,

//操作符枚举的定义
object Op extends Enumeration {
  type Op = Value

  val EQ = Value("=")
  val NE = Value("!=")
  val LTGT = Value("<>")
  val LT = Value("<")
  val LE = Value("<=")
  val GT = Value(">")
  val GE = Value(">=")
}

import Op._

// 泛型 [T]
case class WhereOp[T](columnName: String, op: Op, value: T)

case class WhereIn[T](columnName: String, val1: T, value: T*)


val wheres = Seq(
  WhereIn("state", "IL", "IA", "CA"),
  WhereOp("state", EQ, "IL"),
  WhereOp("name", EQ, "buck trends"),
  WhereOp("age", GT, 29)
)

for (where <- wheres) {
  where match {
    // vals@_* 表示匹配的是可变参数列表(vals是一个参数名称)
    case WhereIn(col, val1, vals@_*) =>
      //生成用逗号隔开的字符串
      val valStr = (val1 +: vals).mkString(", ")
      println(s"where $col in ($valStr)")
    case WhereOp(col, op, value) => println(s"where $col $op $value")
    case _ => println(s"ERROR")
  }
}

=======END=======

转载于:https://my.oschina.net/xinxingegeya/blog/617365

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值