У меня есть такой код, где я хочу сохранить одно из лямбда-выражений в каком-либо объекте.
var opSpecBoolVal = false
val equalCheck = (x: Int, y: Int) => x == y
val greaterthanCheck = (x: Int, y: Int) => x > y
val lessthanCheck = (x: Int, y: Int) => x < y
val notEqualCheck = (x: Int, y: Int) => x != y
operatorType match {
case "_equal" => opSpecBoolVal = false; exitCheck = equalCheck;
case "_greaterthan" => opSpecBoolVal = true; exitCheck = greaterthanCheck;
case "_lessthan" => opSpecBoolVal = false; exitCheck = lessthanCheck;
case "_notequal" => opSpecBoolVal = true; exitCheck = notEqualCheck;
}
exitCheck(10, 20)
код проверяет строку operatorType
и, если она соответствует какому-либо шаблону, устанавливает opSpecBoolVal
для некоторого значения true или false, и оно присваивает одно лямбда-выражение другому объекту, и именно здесь я испытываю трудности при назначении лямбда-объекта другому объекту.Главный девиз - не дать остальной части кода узнать, что содержит строка operatorType
, и напрямую использовать exitCheck
, передав два аргумента и получив логический результат.
Я работал над одним решением, в котором у меня работала только exitCheck
часть, но я не смог установить opSpecBoolVal
в true или false.Вот код, который частично работал.
val exitCheck = operatorType match {
case "_equal" => equalCheck;
case "_greaterthan" => greaterthanCheck;
case "_lessthan" => lessthanCheck;
case "_notequal" => notEqualCheck;
}
Я хочу установить для opSpecBoolVal
значение true или false одновременно.