В то время как все приведенные выше и ниже ответы отлично отвечают на оригинальный вопрос, некоторая дополнительная информация может быть найдена в документации https://docs.scala-lang.org/tour/pattern-matching.html , но они не подходят для моего случая но так как этот ответ на stackoverflow является первым предложением в Google, я хотел бы опубликовать свой ответ, который является угловым случаем вопроса выше.
Мой вопрос:
- Как использовать охранник в выражении соответствия с аргументом функции?
Что можно перефразировать:
- Как использовать оператор if в выражении соответствия с аргументом функции?
Ответ - пример кода ниже:
def drop[A](l: List[A], n: Int): List[A] = l match {
case Nil => sys.error("drop on empty list")
case xs if n <= 0 => xs
case _ :: xs => drop(xs, n-1)
}
ссылка на Scala Fiddle: https://scalafiddle.io/sf/G37THif/2,
как вы можете видетьcase xs if n <= 0 => xs
оператор может использовать n (аргумент функции) с оператором guard (if).
Я надеюсь, что это помогает кому-то, как я.
case x if x.size > 2 => ...