Function9的类型参数数量错误,应为10

时间:2017-11-28 08:02:19

标签: scala

我正在尝试为TaxiRide类创建一个伴随对象,以便能够将其转换为元组。

object TaxiRide extends
  Function9[Long, Boolean, String, String, Float, Float, Float, Float, Short]

现在我正在观察一个看似自相矛盾的错误:

Wrong number of type arguments for Function9, should be 10 

我很好奇为什么会出现这样的错误,并且将case类对象转换为元组的想法是合理的。

2 个答案:

答案 0 :(得分:2)

如果您检查Function9 api,则需要添加+R参数,您需要将该参数传递给返回类型的函数,即Tuple9

所以你的功能应该定义如下

object TaxiRide extends Function9[Long, Boolean, String, String, Float, Float, Float, Float, Short, Tuple9[Long, Boolean, String, String, Float, Float, Float, Float, Short]]{
  override def apply(v1: Long, v2: Boolean, v3: String, v4: String, v5: Float, v6: Float, v7: Float, v8: Float, v9: Short): (Long, Boolean, String, String, Float, Float, Float, Float, Short) =
    (v1, v2, v3, v4, v5, v6, v7, v8, v9)
}

因此,如果您将9个与dataTypes匹配的参数传递给TaxiRide,那么它应该会返回Tuple9

您可以根据您的要求更改returnType,例如+R

答案 1 :(得分:1)

我猜你想要这样的东西:

object TaxiRide extends Function9[Long, Boolean, String, String, Float, Float, Float, Float, Short, TaxRide]

请注意返回值的最后一个类型参数TaxRide