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