【发布时间】:2014-08-05 21:02:17
【问题描述】:
我有以下代码:
require "ostruct"
arguments = [OpenStruct.new({:name=>"ABCD", :city => "Delhi"}),
OpenStruct.new({:name=>"Awesome", :city => "Bhiwandi"}),
OpenStruct.new({:name=>"good", :city => "Chandigarh"})]
arguments.map(&:name)
#results ["ABCD", "Awesome", "good"]
但我想要的是:
[["ABCD", "Delhi"], ["Awesome", "Bhiwandi"], ["good", "Chandigarh"]]
我可以通过以下方式获得:
arguments.map(&:name).zip(arguments.map(&:city))
但是,有没有更优雅的方法,比如arguments.map(&[:name, :city]).?
【问题讨论】:
-
一定要使用 OpenStruct 吗?
-
我只是用它来提出问题,实际上,我的论点是一个活动记录关系数组。
-
什么是
"Ostruct"?它似乎不是标准库,也不是宝石。引入非标准的时候,需要说明。 -
@sawa 你认不出一个简单的错字?也许你可以尝试一下明显的“你是说
require 'ostruct'你是require 'Ostruct'吗?” -
@saurabh 这是个坏主意,而且太慢了,..但仍然适合你
arguments.map(&->(o){ [o.name, o.city] }