Матч, случай с логикой? - PullRequest
       3

Матч, случай с логикой?

2 голосов
/ 07 декабря 2011
def searchEquipmentCategory(category: String) = Action {

    val equipment = Equipment.searchByCategory(category)
    equipment.size match {
        case 0 => NotFound(views.html.helpers.notfound("Equipment not found for category :" + category))
        case (_ > 0) => Ok(views.html.equipment.index(equipment, capitalize(category)))
    }

}

Возможно ли поместить логику в оператор сравнения?

Я искал везде и не могу найти никакой документации.Я просто хочу, чтобы в случае 0 было одно, если число больше 0.

Использование значения по умолчанию _ прекрасно работает в этой ситуации, но что если я хочу сделать 3 вещи?

  • если число == 0
  • , если число находится в диапазоне от 1 до 10
  • , если число находится в диапазоне от 11 до 20

Может быть, я пытаюсь сделать слишком много с делом.

Спасибо за помощь.

Ответы [ 2 ]

11 голосов
/ 07 декабря 2011
case i if i > 0 => Ok( ... )

Таким образом, чтобы различать 0, 1 to 10 и 11 to 20:

case 0 =>
case i if i >=  1 && i <= 10 =>
case i if i >= 11 && i <= 20 =>

Но тогда, я думаю, блок if - else if - else более читабелен.

6 голосов
/ 07 декабря 2011

Это называется охранники:

case x if (x > 0) => OK ...
...