gpt4 book ai didi

ruby - 在返回散列或 nil 的方法上使用 ruby​​ 'or equals' ||=

转载 作者:数据小太阳 更新时间:2023-10-29 08:25:29 27 4
gpt4 key购买 nike

我有一个返回散列或 nil 的方法:

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

很明显,我的示例运行起来有点单薄,还有其他方法可以解决这个问题,但如果可以使用 ||=,我很想知道如何使用。

谢谢!

最佳答案

显而易见:

(self.person_of_my_age(age) || {'height' => 0})['height']

但不知何故这感觉不太对

关于ruby - 在返回散列或 nil 的方法上使用 ruby​​ 'or equals' ||=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2257765/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com