加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

除了obj [‘blah’]之外,更多惯用ruby写@var = obj [‘blah’]的

发布时间:2020-12-17 03:19:04 所属栏目:百科 来源:网络整理
导读:我确信有一个更惯用的 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?
我确信有一个更惯用的 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'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读