首页 > 编程语言 > 详细

ruby中将数组转换成hash

时间:2015-12-19 23:08:56      阅读:611      评论:0      收藏:0      [点我收藏+]

class Array
def to_h(default=nil)
Hash[ *inject([]) { |a, value| a.push value, default || yield(value) } ]
end
end

 

看懂这个方法先理解这个

p Hash[*[1,2,3,4]]
打印出
{1=>2, 3=>4}

扩展了一个to_h方法。这个*就是将数组调用inject方法返回的数组平铺,我是这么理解的,
当default为nil,也就是不传递参数给to_h时,把value传递给方法块运算,value和块运算结果都加入到数组a中,


事例

a.to_h(true)
# => {1=>true, 2=>true, 3=>true}
a.to_h { |value| [value * -1, value * 2] }
# => {1=>[-1, 2], 2=>[-2, 4], 3=>[-3, 6]}

ruby中将数组转换成hash

原文:http://www.cnblogs.com/or2-/p/5059978.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!