定义应为String组件的Product / Tuple(任何大小)的通用参数

时间:2018-12-09 02:50:52

标签: scala generics

类似这样

trait SomeTrait {
  def m[A <: (String, ... *)](value: A)
}

可能可以使用某些库来实现。

更新:List(String)看起来很简单,但是我很好奇表达这种条件的能力。

1 个答案:

答案 0 :(得分:1)

您可以使用无形状。

import shapeless._

trait SomeTrait {
 def m[T <: Product, L <: HList](t : T)
                    (implicit gen: Generic.Aux[T, L],
                              c: LUBConstraint[L, String]) =  println(t)
}


// m(("2","3","7")) // compiles
// m(("2","3",7)) // wont compile
// m(("2","3","7","8")) // compiles