Как сделать переменную Ruby, которая в условных выражениях будет иметь значение false - PullRequest
4 голосов
/ 28 января 2010

Я хочу, чтобы моя переменная (прокси-объект) оценивалась как ложная при использовании в условных предложениях. Я знаю, что могу использовать .nil? и даже var == ноль, но я думаю, что этого недостаточно. Я пытаюсь сделать следующее:

if myproxy # not only myprroxy.nil? or myproxy == nil, but just that
  # myproxy's backend object is not nil
else
  # myproxy's backend object is nil
end

Есть идеи?

1 Ответ

4 голосов
/ 28 января 2010

Единственными двумя объектами, которые оценивают значение false-ish в логическом контексте в Ruby, являются nil, единственный экземпляр NilClass и false, единственный экземпляр FalseClass. Каждый другой объект оценивается как истинное значение.

Если вы хотите, чтобы ветвь else была взята, то myproxy должен оценить либо nil, либо false.

Если вы хотите что-то логическое, над которым у вас есть фактический контроль, вы можете попробовать выражение case и переопределить оператор подстановки регистра MyProxy#===.

...