Хорошо и
наглядно работает на константах
case class Item(x:int, y:int)
val item = Item(...)
item match {
case Item(0,0) => "zeroes"
case ...
}
но если мне требуется сопоставить объект с образцом, характеристики которого заранее неизвестны, то получается вот такая фигня
case class Item(x:int, y:int)
val expectedX = 0;
val expectedY = 0;
val item = Item(...)
item match {
case Item(a,b) if (a==expectedX && b==expectedY) => "zeroes"
case ...
}
Т.е. те же if-ы, вид сбоку. Понятно, почему нельзя написать case Item(expectedX, expectedY), потому что в данном случае получаем синонимы для значений объекта, но почему нельзя написать что-то вроде case Item(
@expectedX,
@expectedY) — т.е. каким либо образов указать компилятору, что я хочу использовать здесь значения переменных.
Или такое возможно, а я просто плохо читал? Если нельзя, то паттерн матчинг получается довольно убогий, потому что не позволяет избавиться от if-ов, которые неудобно читать.
ПС
Плагин для НетБинс довольно неудобный. Кто-нибудь имел опыт с Eclipse и IDEA — лучше там плагины в сравнении с НетБинс, или тоже так себе?