Ho una classe di casi che ha alcuni parametri per il suo costruttore e definisco un oggetto di classe che definisce un costruttore alternativo che accetta un diverso insieme di argomenti, in questo modo:Errore spurio "non accetta argomenti" con costruttore case class
case class MyClass (c: Char, mc: List[MyClass])
object MyClass {
def apply(c: Char, mc: MyClass): MyClass = {
MyClass(c, List(mc))
}
}
voglio usare l'originale costruttore di classe caso in foldRight
:
object SomeStuff {
def problem (s: String) {
assert(!s.isEmpty)
val zero = MyClass('a', Nil)
val mc2 = "Pillsy Pillsy Pillsy" foldRight(zero) {
MyClass(_, List(_))
}
}
}
Quando faccio questo, ottengo un messaggio di errore del compilatore: "MyClass non prende parametri. " Se commento la sezione val mc2 = ...
questo problema va via, ma MyClass
sta chiaramente prendendo i parametri nella definizione di zero
. Mi sento come se mi dovessi perdere qualcosa di veramente semplice, ma non ho idea di cosa sia. Ho provato un paio di soluzioni alternative, come la definizione di un metodo helper o un valore di funzione da utilizzare come secondo argomento di foldRight
, ma nessuna di queste è utile, il che non è troppo sorprendente dato che fondamentalmente sto vagando in giro casualmente.