Ruby 我怎样才能让这个逻辑更鲁比一点呢

Ruby 我怎样才能让这个逻辑更鲁比一点呢,ruby,Ruby,我如何压缩这个逻辑 an_array = some_list.select do |item| include_item = true if a_boolean inclu

我如何压缩这个逻辑

an_array = some_list.select do |item|                                  
  include_item = true                                                        
  if a_boolean                                                                  
    include_item = a_method?(item)                                     
  end                                                                        
  include_item                                                               
end   

我敦促你发布一些更合理的例子;元变量会导致黑暗面。在您的情况下,在您的情况下,如果
a_boolean
false
,则代码基本上计算
a_数组=某个列表。克隆
,但速度较慢。因此,写作更为明智

an_array =
  if a_boolean
    some_list.select { |item| a_method?(item) }
  else
    some_list.clone
  end
我仍然不知道它是否真的好,因为使用过度泛型的代码完全无法理解您的意图

编辑:添加了
.clone

编辑2:正如评论中所指出的,米加和我那蜿蜒的大脑最终到达了萨梅斯的地方:

an_array = some_list.clone
an_array.select! { |item| a_method?(item) } if a_boolean

谢谢你的反馈。我会考虑下一次发布一个问题。这取决于是否需要保存<代码>内容清单>代码>,我将重新评论<代码>(&:a_方法)如果a_boolean是“最”的rubysh。@meagar:我考虑过,然后以结构共享为由拒绝了它,然后想起我应该
.clone
,现在你的建议听起来又合情合理了<代码>一个数组=some\u list.clone;一个数组。选择!(&:a_方法)如果布尔值起作用。@sawa:Doh,它不是方法,而是函数!也就是说,我不明白你的语法…米加,我想你明白了。阿玛丹,请阅读2011年10月3日的文章。这个问题更适合你。
an_array =
  if a_boolean
    some_list.select { |item| a_method?(item) }
  else
    some_list.clone
  end
an_array = some_list.clone
an_array.select! { |item| a_method?(item) } if a_boolean