让我们想象一个可以传递Any
类型变量的方法。
def myMethod(input: Any*) = {
input.foreach(println)
}
myMethod("q", "w", "e", 1, 2, 3, true, false, ...)
Scala 是否允许限制类型,例如:only String
和 Integer
?
让我们想象一个可以传递Any
类型变量的方法。
def myMethod(input: Any*) = {
input.foreach(println)
}
myMethod("q", "w", "e", 1, 2, 3, true, false, ...)
Scala 是否允许限制类型,例如:only String
和 Integer
?
Scala 3 支持联合类型,这允许我们直接编码这个约束。
在 Scala 2 中,如果您稍微聪明一点,您仍然可以使用隐式来做到这一点。这称为磁铁图案。我们的想法是,我们将编写我们的方法的一个具体实现,它采用我们控制的特征的实例,称为我们的磁铁,然后我们将编写一堆隐式来获取我们真正关心的类型并将它们转换为我们的磁铁特质。
然后写入
myMethod
获取MyMethodMagnet
实例,Scala 会自动将有效值转换为适当的类型。您仍然以同样的方式调用它,Scala 隐式地将所有内容包装在我们的磁铁类中。