Scala继承(构造函数的参数太多)

时间:2014-03-08 23:38:16

标签: scala inheritance constructor

我正在尝试扩展我在

找到的CSVReader

https://github.com/tototoshi/scala-csv/blob/master/src/main/scala/com/github/tototoshi/csv/CSVReader.scala

我写了一个类的以下裸骨壳:

class CSVOtherReader(reader: Reader, format: CSVFormat) 
extends CSVReader(reader, format)     {

}

这给了我错误:

too many arguments for constructor CSVReader: (reader: java.io.Reader)(implicit 
format: com.github.tototoshi.csv.CSVFormat)com.github.tototoshi.csv.CSVReader  

此类是直接从Scala IDE Eclipse插件创建的,通过创建一个新类,将其标记为继承自超类并直接指向CSVReader类。因此,我觉得语法应该是正确的,但我想知道在哪些情况下这可能不起作用。有没有关于父类(在github链接中找到)的东西阻止我这样做?快速查看Scala中的继承使得这种语法看起来是正确的。

-Arjun

1 个答案:

答案 0 :(得分:3)

从CSVReader类的源代码中,您可以看到它有两个单独的参数列表。所以正确的语法是:

class CSVOtherReader(reader: Reader, format: CSVFormat) 
    extends CSVReader(reader)(format)     {

}

或者,如果您想在子类中保留隐式参数:

class CSVOtherReader(reader: Reader)(implicit format: CSVFormat)
    extends CSVReader(reader)(format)     {

}

IDE显然没有正确处理单独的参数列表。