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=======