Ruby on rails 将散列值映射到数组中的键值对
预期产出:Ruby on rails 将散列值映射到数组中的键值对,ruby-on-rails,ruby,Ruby On Rails,Ruby,预期产出: a = {one: 2, two: 3}.map{|k,v| {k => v}} # => [{:one=>2}, {:two=>3}] a[0] # => {:one=>2} a[0].class # => Hash a[0].key # ~> ArgumentError: wrong number of arguments (given 0, expected 1) 这将导致[0]。键>>:1 为什么我不
a = {one: 2, two: 3}.map{|k,v| {k => v}} # => [{:one=>2}, {:two=>3}]
a[0] # => {:one=>2}
a[0].class # => Hash
a[0].key # ~> ArgumentError: wrong number of arguments (given 0, expected 1)
这将导致[0]。键>>:1
为什么我不能获取数组中第一项的键值
解决方案:键。首先。检查时,hashkey需要一个参数,该参数是您要为其查找对应键的值:
[{one: 2}, {two: 3}]
搜索是线性的,使用rb\u hash\u foreach对哈希中的对进行迭代。OP可能正在查找[0]。keys.first=>:1。我们不能从这个问题上说出来。你搞错了:一和一。你应该写最后一行a[0].key=>:one或a[0].key=>:one。我听不懂上面语句中的一个词,但它们肯定不包含问题,所以被否决。[{one:2},{two:3}]与刚才用[{one=>2},{:two=>3}的替代语法写的值相同。
p a[0].key(2) # => :one