Scala Pattern Match之Variable Argument Listsspa
關於可變參數列表http://my.oschina.net/xinxingegeya/blog/617359.net
這裏主要講模式匹配之參數列表,scala
//操做符枚舉的定義 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=======code