如何在Scala中使用模式匹配来避免def定义的语法开销?

jwi*_*ndy 4 scala pattern-matching

在使用模式匹配实现def时如何避免包装args?

例子 :

def myDef(a: A, b:B, c: C): D = (a,c,d) match {
  case ('qsdqsd, _ , _ ) => ???
  case _ => ???
}
Run Code Online (Sandbox Code Playgroud)

Rex*_*err 9

您可以将元组作为函数参数:

def myDef(abc: (A,B,C)): D = abc match {
  case ('qxpf, _, _) => ???
  case _ => ???
}
Run Code Online (Sandbox Code Playgroud)

用户将其非元组参数列表自动提升为元组.注意:

scala> def q(ab: (Int,String)) = ab.swap
q: (ab: (Int, String))(String, Int)

scala> q(5,"Fish")
res1: (String, Int) = (Fish,5)
Run Code Online (Sandbox Code Playgroud)