У меня есть метод, который возвращает хэш или ноль:
def person_of_age(age)
some_hash = @array_of_hashes.select { |h| h.age == age }.last
return some_hash
end
Я хочу использовать этот хеш следующим образом:
my_height = 170
my_age = 30
if my_height < self.person_of_age(my_age)['height']
puts "You are shorter than another person I know of the same age!"
end
Теперь, если хеш возвращает nil, ruby не нравится мне, используя ['height']:
undefined method `[]' for nil:NilClass (NoMethodError)
Достаточно справедливо, но как я могу использовать || =, чтобы избежать этой проблемы?
Если метод возвращает nil, давайте просто скажем, что я хочу, чтобы высота была равна 0.
Я пытался делать то же самое, но безрезультатно:
if my_height < self.person_of_age(age)||={ 'height' => 0 }['height']
#...
if my_height < self.person_of_age(age)['height'] ||= 0
Ясно, что мой пример немного слабоват, и есть другие способы решения этой проблемы, но если можно использовать || =, я бы хотел узнать, как.
Спасибо!