Ruby的隐藏功能
继续“隐藏的...特性”,让我们分享Ruby编程语言鲜为人知的但有用的特性。
试着限制这个讨论与核心Ruby,没有任何Ruby on Rails的东西。
也可以看看:
(请每个答案只有一个隐藏功能。)
谢谢
从Ruby 1.9 Proc#===是Proc#调用的别名,这意味着Proc对象可以在case语句中使用,如下所示:
def multiple_of(factor)
Proc.new{|product| product.modulo(factor).zero?}
end
case number
when multiple_of(3)
puts "Multiple of 3"
when multiple_of(7)
puts "Multiple of 7"
end
彼得库珀有一个很好的Ruby技巧列表。 也许我最喜欢的是允许枚举单个项目和集合。 (也就是说,将一个非集合对象视为一个包含该对象的集合。)它看起来像这样:
[*items].each do |item|
# ...
end
不知道这是如何隐藏的,但是我发现它需要在一维数组中生成一个Hash:
fruit = ["apple","red","banana","yellow"]
=> ["apple", "red", "banana", "yellow"]
Hash[*fruit]
=> {"apple"=>"red", "banana"=>"yellow"}
链接地址: http://www.djcxy.com/p/42807.html