Мне нужно проверить, присутствует ли значение на карте, и если его нет, сделать что-нибудь еще и вернуть.
По причинам, выходящим за рамки этого фрагмента кода, мне нужно сделать это без проявления null в качестве значения переменной , то есть без какой-либо из переменных, имеющих тип, допускающий значение null.
Это то, что у меня есть до сих пор:
fun matchVariable(x: Variable, y: Term, m: MutableMap<Variable, Term>): Boolean {
if (typeOf(x) != typeOf(y)) return false
val x1 = m[x]?:{
m[x] = y
return true
}
return x1 == y
}
The ' return true 'получает сообщение об ошибке, что return здесь не разрешен, поэтому кажется, что значение по умолчанию для оператора Элвиса не может быть блоком из нескольких выражений.
Я мог бы выделить эти две строки в отдельную функцию; это запасное решение.
Но похоже, что должен быть краткий способ сделать это в строке (при соблюдении вышеуказанного критерия не проявлять null как значение переменной). Есть?