scala是否真的设计和实现,以便无法将元组转换为可接受的参数列表?在How to pass a tuple argument the best way?中,它反过来 - 转换参数接受方法。这似乎没有涵盖一个简单的用例:
由于缺乏这种方式,代码变得笨拙,例如当您尝试扩展一个带参数的类时,例如当你想扩展一个参数类时,你不能修改它的源代码。在这种情况下,您需要生成一个工厂对象来克服上述限制,因为没有函数可以替换正在扩展的类的参数列表。因此,您可以通过创建一个工厂对象来解决它,该工厂对象实例化您希望扩展的类,而不仅仅是扩展它,作为一种解决方法。这种解决方法对我来说是显而易见且不经济的。
提前致谢。
答案 0 :(得分:4)
这可以使用标准语言功能来实现。 您可以定义一个只从元组转换为原始类定义所期望的参数的扩展类。
class TakeTwo(a: Int, b: Int)
class TakeTwoTuple( t : (Int,Int) ) extends TakeTwo(t._1, t._2)
scala> val tuple = (3,4)
tuple: (Int, Int) = (3,4)
scala> new TakeTwoTuple(tuple)