コンストラクター用のいくつかのパラメーターを持つケース クラスがあり、次のように、別の引数セットを取る代替コンストラクターを定義する付随するクラス オブジェクトを定義します。
case class MyClass (c: Char, mc: List[MyClass])
object MyClass {
def apply(c: Char, mc: MyClass): MyClass = {
MyClass(c, List(mc))
}
}
で元のケースクラスコンストラクターを使用したい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
。本当に基本的な何かが欠けているように感じますが、それが何であるかわかりません。の2番目の引数として使用するヘルパーメソッドまたは関数値を定義するなど、いくつかの回避策を試しましたfoldRight
が、どれも役に立ちません。基本的にランダムにいじっているので、それほど驚くことではありません。