Ruby的隐藏功能

继续“隐藏的...特性”,让我们分享Ruby编程语言鲜为人知的但有用的特性。

试着限制这个讨论与核心Ruby,没有任何Ruby on Rails的东西。

也可以看看:

  • C#隐藏的功能
  • Java的隐藏功能
  • JavaScript的隐藏功能
  • Ruby on Rails的隐藏功能
  • Python的隐藏功能
  • (请每个答案只有一个隐藏功能。)

    谢谢


    从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

    上一篇: Hidden features of Ruby

    下一篇: Hidden features of HTML