2014-01-18 54 views
0

基本上我想知道是否有任何更好的解決方案,然後執行以下操作:如何檢查是否反映Type代表一個元組?

t <:< typeOf[Tuple1[_]] || 
t <:< typeOf[Tuple2[_, _]] || 
t <:< typeOf[Tuple3[_, _, _]] || 
t <:< typeOf[Tuple4[_, _, _, _]] || 
t <:< typeOf[Tuple5[_, _, _, _, _]] || 
t <:< typeOf[Tuple6[_, _, _, _, _, _]] || 
t <:< typeOf[Tuple7[_, _, _, _, _, _, _]] || 
t <:< typeOf[Tuple8[_, _, _, _, _, _, _, _]] || 
t <:< typeOf[Tuple9[_, _, _, _, _, _, _, _, _]] || 
t <:< typeOf[Tuple10[_, _, _, _, _, _, _, _, _, _]] || 
t <:< typeOf[Tuple11[_, _, _, _, _, _, _, _, _, _, _]] || 
t <:< typeOf[Tuple12[_, _, _, _, _, _, _, _, _, _, _, _]] || 
t <:< typeOf[Tuple13[_, _, _, _, _, _, _, _, _, _, _, _, _]] || 
t <:< typeOf[Tuple14[_, _, _, _, _, _, _, _, _, _, _, _, _, _]] || 
t <:< typeOf[Tuple15[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _]] || 
t <:< typeOf[Tuple16[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]] || 
t <:< typeOf[Tuple17[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]] || 
t <:< typeOf[Tuple18[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]] || 
t <:< typeOf[Tuple19[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]] || 
t <:< typeOf[Tuple20[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]] || 
t <:< typeOf[Tuple21[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]] || 
t <:< typeOf[Tuple22[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]] 

回答

5

runtime.ScalaRunTime.isTuple必須規範:

def isTuple(x: Any) = x != null && x.getClass.getName.startsWith("scala.Tuple") 

t.typeSymbol.fullName startsWith "scala.Tuple" 
相關問題