Tag: 收集

检查收集function中的nil值

我有一系列哈希,如下所示。 说我的数组是@fruits_list: [ {:key_1=>15, :key_2=>”Apple”}, {:key_1=>16, :key_2 =>”Orange”}, {:key_1=>17, :key_2 =>” “} ] 我想使用’|’加入哈希值中的值; 但我的最终输出不应包含零值。 我使用以下方法连接: @fruits_list.collect { |hsh| hsh[:key_2] }.join(“|”) 但是这在我的输出中增加了nil,所以我的最终输出有3个项目{“Apple”| “橙色”| “”}。 我想在我的列表中有两个项目,并希望消除零值,所以我的最终输出应该看起来像{“Apple”| “橙子”}。 我试过了: @fruits_list.collect { |hsh| hsh[:key_2] unless hsh[:key_2].nil? }.join(“|”) @fruits_list.collect { |hsh| hsh[:key_2] unless hsh[:key_2].nil? }.join(“|”) @fruits_list.collect { |hsh| hsh[:key_2] unless hsh[:key_2].nil? }.join(“|”)但是这甚至会在最终输出中返回3个项目。 我做错了什么或如何消除零值?

Linq地图! 还是收集!

什么是Linq相当于地图! 或收集! Ruby中的方法? a = [ “a”, “b”, “c”, “d” ] a.collect! {|x| x + “!” } a #=> [ “a!”, “b!”, “c!”, “d!” ] 我可以通过使用foreach迭代集合来完成此操作,但我想知道是否有更优雅的Linq解决方案。

如何改进用“`引用所有数组元素的代码并返回一个包含所有引用和逗号分隔元素的字符串?

我正在使用Rails 3.2.2,我想用’引用所有数组元素’并返回一个包含所有引用和逗号分隔元素的字符串。 这时我正在使用 [‘a’, ‘b’, ‘c’].collect {|x| “‘#{x}'”}.join(“, “) # => “‘a’, ‘b’, ‘c'” 但我认为我可以改进上面的代码(可能是通过使用我不知道的Ruby方法,如果它存在)。 可能吗?

关于Ruby收集方法的问题

我有一系列哈希 例如: cars = [{:company => “Ford”, :type => “SUV”}, {:company => “Honda”, :type => “Sedan”}, {:company => “Toyota”, :type => “Sedan”}] # i want to fetch all the companies of the cars cars.collect{|c| c[:company]} # => [“Ford”, “Honda”, “Toyota”] # i’m lazy and i want to do something like this cars.collect(&:company) # => undefined […]

映射数组仅修改与特定条件匹配的元素

在Ruby中,以某种方式映射数组的最具表现力的方式是什么?某些元素被修改而其他元素保持不变 ? 这是一种直截了当的方式: old_a = [“a”, “b”, “c”] # [“a”, “b”, “c”] new_a = old_a.map { |x| (x==”b” ? x+”!” : x) } # [“a”, “b!”, “c”] 当然,如果不够的话,省略“单独”的情况: new_a = old_a.map { |x| x+”!” if x==”b” } # [nil, “b!”, nil] 我想要的是这样的: new_a = old_a.map_modifying_only_elements_where (Proc.new {|x| x == “b”}) do |y| y + “!” […]