gpt4 book ai didi

ruby - 更惯用的 ruby​​ 写法 @var = obj ['blah' ] 除非 obj ['blah' ].nil?

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

我确定有一种更惯用的 ruby​​ 方式来编写下面的代码:

@var = obj['blah'] unless obj['blah'].nil?

我有很多事情要做(见下文),一定有更好的方法!

@num_x = obj['num_x'] unless obj['num_x'].nil?
@num_y = obj['num_y'] unless obj['num_y'].nil?
@num_iterations = obj['num_iterations'] unless obj['num_iterations'].nil?
@pe = obj['pe'] unless obj['pe'].nil?

我觉得 ||= 运算符可能很有用,但似乎不太清楚如何使用它。

最佳答案

根据您的情况,除非实例变量已经具有您想要保留的现有值,如果 obj 中的值为 nil 那么它可能不是只是让它们设置为 nil 的问题。

或者,您可以编写一些辅助函数,例如:

def set_instance_variables_for_non_nil_values(h, *keys)
keys.each do |key|
instance_variable_set "@#{key}", h[key] unless h[key].nil?
end
end

然后在您的示例代码中,您将像这样使用它:

set_instance_variables_for_non_nil_values obj, 'num_x', 'num_y',
'num_iterations', 'pe'

关于ruby - 更惯用的 ruby​​ 写法 @var = obj ['blah' ] 除非 obj ['blah' ].nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3326743/

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