scala实例化yield的case类

时间:2013-08-31 01:40:49

标签: scala monads scalaz case-class for-comprehension

我想知道是否有办法直接从for comprehension实例化一个case类(在这种情况下我使用scalaz验证函数),而不必手动输入for comprehension中的参数

如果你有这样的案例类

  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的案例类实例(显然p是不正确的,因为我刚刚使用了apply。)

我之所以这样问,是因为我有提供20多个变量的理解,并且必须将每个变量都输入到case类实例化中,这会产生大量的样板

0 个答案:

没有答案