除了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' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |