У меня есть класс case, который имеет несколько параметров для своего конструктора, и я определяю сопровождающий объект класса, который определяет альтернативный конструктор, который принимает другой набор аргументов, например так:
case class MyClass (c: Char, mc: List[MyClass])
object MyClass {
def apply(c: Char, mc: MyClass): MyClass = {
MyClass(c, List(mc))
}
}
Я хочу использовать исходныйконструктор case-класса в foldRight
:
object SomeStuff {
def problem (s: String) {
assert(!s.isEmpty)
val zero = MyClass('a', Nil)
val mc2 = "Pillsy Pillsy Pillsy" foldRight(zero) {
MyClass(_, List(_))
}
}
}
Когда я это делаю, я получаю сообщение об ошибке от компилятора: «MyClass не принимает параметры ." Если я закомментирую секцию val mc2 = ...
, эта проблема исчезнет, но MyClass
явно принимает параметры в определении zero
. Я чувствую, что мне не хватает чего-то действительно основного, но я понятия не имею, что это такое. Я пробовал пару обходных путей, таких как определение вспомогательного метода или значения функции для использования в качестве второго аргумента foldRight
, но ни один из них не помогает, что не так уж удивительно, поскольку я в основном шарю случайно.