Tengo una clase de caso que tiene algunos parámetros para su constructor, y defino un objeto de clase acompañante que define un constructor alternativo que toma un conjunto diferente de argumentos, de este modo:Error aparentemente espurio "no toma argumentos" con constructor de clase de caso
case class MyClass (c: Char, mc: List[MyClass])
object MyClass {
def apply(c: Char, mc: MyClass): MyClass = {
MyClass(c, List(mc))
}
}
Quiero usar el constructor original de la clase caso en un foldRight
:
object SomeStuff {
def problem (s: String) {
assert(!s.isEmpty)
val zero = MyClass('a', Nil)
val mc2 = "Pillsy Pillsy Pillsy" foldRight(zero) {
MyClass(_, List(_))
}
}
}
Cuando hago esto, me sale un mensaje de error del compilador: "MiClase no toma parámetros ". Si hago un comentario en la sección val mc2 = ...
, este problema desaparece, pero MyClass
está tomando claramente los parámetros en la definición de zero
. Siento que debo estar perdiendo algo realmente básico, pero no tengo idea de qué se trata. He intentado un par de soluciones, como definir un método de ayuda o un valor de función para usar como el segundo argumento de foldRight
, pero nada de eso ayuda, lo cual no es demasiado sorprendente ya que básicamente estoy hurgando aleatoriamente.