На первый взгляд ложная ошибка «не принимает аргументы» в конструкторе класса case

У меня есть класс 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, но ни один из них не помогает, что не так уж удивительно, поскольку я в основном шарю случайно.

6
задан Pillsy 12 May 2012 в 18:15
поделиться