这可能是一个愚蠢的,但我在这里遗漏了一些东西......
我有这个
users = [{name: "chris"}, {name: "john"}]
这有效
users.map do |obj|
puts obj[:name]
end
我想这样做
user.map(&:name)
试图以不同的方式触发符号而没有运气。我无法想出一种有意义的方法,但我觉得有一种方法。
答案 0 :(得分:2)
为了能够使用user.map(&:name)
,您需要在数组中的每个对象上使用name
方法。
哈希没有name
方法,但你可以实现它(不要这样做,这只是一个例子):
class Hash
def name
self[:name]
end
end
但更好的解决方案是为您的名字定义一个类。由于这种情况非常简单,Struct会这样做。
假设这些名称属于用户或客户,您可以执行以下操作:
User = Struct.new(:name)
users = []
users << User.new('chris')
users << User.new('john')
user.map(&:name) # ['chris', 'john']
答案 1 :(得分:1)
Utitlies.sleep()
将为您提供所有名称的数组
答案 2 :(得分:0)
您可以使用基于lambda
和proc
的以下语法:
users = [{name: "chris"}, {name: "john"}]
p users.map(&->(i){i[:name]})
或
users = [{name: "chris"}, {name: "john"}]
p users.map(&proc{|i| i[:name]})
或
users = [{name: "chris"}, {name: "john"}]
name = proc{|i| i[:name]}
p users.map(&name)