Каждое case
создает новую временную переменную, которая в данном случае вам на самом деле не нужна. Так что вы можете сделать это:
def convertor(marks : Int) : Int = marks match {
case _ if marks < 50 => 0
case _ if marks >= 50 && marks < 58 => 1
case _ if marks >= 58 && marks < 70 => 2
case _ if marks >= 70 && marks < 85 => 3
case _ if marks >= 85 => 4
}
Или, как метко указывает @LeoC:
def convertor(marks : Int) : Int = marks match {
case _ if marks < 50 => 0
case _ if marks < 58 => 1
case _ if marks < 70 => 2
case _ if marks < 85 => 3
case _ => 4
}
Но это немного лучше, чем секвенирование if
/ else if
тестов. Я был бы склонен попробовать что-то вроде этого:
def convertor(marks : Int) : Int =
Seq(50, 58, 70, 85, Int.MaxValue).indexWhere(marks < _)