1

for 内包表記から手動でパラメーターをフィードすることなく、for 内包表記 (この場合は scalaz 検証ファンクターを使用) からケースクラスを直接インスタンス化する方法があるかどうか疑問に思っていました。

このようなケースクラスがある場合

  case class Rawr(id:Option[Long],int:Int)

そして、あなたがこのようなことをすると仮定します

  val test = for {
    none <- None.successNel
    anotherVariable <- 3.successNel
  } yield Rawr.apply _ //This doesn't work, just here to make it compile. 
  // I want to instantiate a Rawr automatically with the variables
  // in the for comprehension instead of having to manually put in
  // none and anotherVariable 

やっとこんな感じで使えるようになりました

  test match {
    case Success(p) => {
      //Should get a case class instance here i.e. p = Rawr(None,3)
    }
  }

問題は、p のケース クラス インスタンスを取得していないことです (apply を使用したばかりなので、明らかに p は正しくありません)。

私がこれを尋ねている理由は、20以上の変数を提供する内包表記があり、各変数をケースクラスのインスタンス化にフィードする必要があるため、多くのボイラープレートが作成されるためです

4

0 に答える 0