Я пытаюсь обработать кортеж, где один из случаев состоит в том, что оба значения равны. Есть ли лучший, более сжатый способ match на этом, чем
(p, q) match {
case (p, q) if (p == q) => println("Match!")
...
}
?
Ответ 1
Лично я думаю, что вы сделали это отлично, потому что это просто, понятно и понятно читателю, что происходит.
Итак, здесь вы можете сделать это без предложения if. Вы могли бы просто соответствовать версии с заменой, используя backticks, чтобы превратить q в стабильные идентификаторы. Как отметил @Luigi, вы можете просто проверить, что p соответствует q:
(p, q) match {
case (`q`, _) => println("Match!")
...
}
Вот так:
def f(p: Int, q: Int) {
(p, q) match {
case (`q`, _) => println("Match!")
case _ => println("No")
}
}
f(1, 2) // "No"
f(1, 1) // "Match!"