"SUV"}, {:company => "Honda", :type => "S-6ren">
gpt4 book ai didi

ruby - 关于Ruby collect 方法的问题

转载 作者:数据小太阳 更新时间:2023-10-29 07:43:33 26 4
gpt4 key购买 nike

我有一个哈希数组

例如:

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 method `company'

我想知道是否有类似的快捷方式来执行上述操作。

最佳答案

我相信你当前的代码 cars.collect{|c|如果您要枚举任意数组,c[:company]} 是最好的方法。您将通过 & 快捷方式传入的方法必须是在 Hash 上定义的方法,因为数组中的每个对象都是 Hash 类型。由于没有为 Hash 定义的 company 方法,您会得到“undefined method 'company'”错误。

不过,如果您对汽车数组进行操作,则可以使用 cars.collect(&:company),因为传递到 collect block 中的每个对象都是键入 Car(具有可用的 company 方法)。因此,也许您可​​以修改代码,改为使用 Cars 数组。

关于ruby - 关于Ruby collect 方法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5473325/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com