Я понимаю (вроде), как работает сопоставление с образцом в Scala. Допустим, у меня есть два списка в форме:
sealed abstract class IntList
case class Empty() extends IntList // The empty list, often called Nils
case class Element(n: Int, tail: IntList) extends IntList // Element is usually called Cons
Допустим, я хочу создать функцию take(n, xs)
- Он должен вернуть первые n элементов xs.
Я пытался с нормальным сопоставлением с образцом:
def take(n: Int, xs: IntList): IntList = xs match {
case n == 0 => Empty()
case xs : Empty => Empty()
case xs : Element => Element(xs.n, take(n-1, xs))
}
Но тогда, конечно, n не error: not found: value == case n == 0 => Empty()
Как я могу это сделать, возможно, это просто, но я новичок в Scala?