Похоже, вы хотите использовать контрольные значения для представления nil
значений.
Вот один способ, который может или не может точно соответствовать вашей ситуации. Сначала определите функцию, которая генерирует ваш нилификатор на основе выбранного вами контрольного значения:
def make_nilifier sentinel
-> (var) { var == sentinel ? nil : var }
end
В вашем первом примере контрольные значения равны 2:
nilifier = make_nilifier 2
Затем вы можете присваивать значения my_var
через вызовы nilifier
:
> my_var = nilifier.call 1
> my_var
=> 1
> my_var = nilifier.call 2
> my_var
=> nil
В вашем случае вы проверяете значения, которые уже установлены - это дает возможность проверить значение при присвоении. Опять же, это может или не может точно соответствовать, но может дать некоторые идеи относительно чего-то полезного.