Skip to content

Instantly share code, notes, and snippets.

@alexy
Created March 2, 2012 22:42
Show Gist options
  • Save alexy/1961985 to your computer and use it in GitHub Desktop.
Save alexy/1961985 to your computer and use it in GitHub Desktop.
case class updates
sealed trait Response
case object Right extends Response
case object Wrong extends Response
case object Skip extends Response
case class Responses(right: Long = 0, wrong: Long = 0, skip: Long = 0) {
def apply(r: Response) = r match {
case Right => right
case Wrong => wrong
case Skip => skip
}
def updated(r: Response, v: Long) = r match {
case Right => Responses(v,wrong,skip)
case Wrong => Responses(right,v,skip)
case Skip => Responses(right,wrong,v)
}
def inc(r: Response) = r match {
case Right => Responses(right+1,wrong,skip)
case Wrong => Responses(right,wrong+1,skip)
case Skip => Responses(right,wrong,skip+1)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment