【问题标题】:What are delegates in ruby?红宝石中的代表是什么?
【发布时间】:2013-08-21 06:15:21
【问题描述】:

我一直在浏览 rails 的源代码,发现很多提到“委托”

这是做什么的以及它是如何工作的?

【问题讨论】:

    标签: ruby-on-rails ruby oop delegates


    【解决方案1】:

    这里是official explanation

    委托(*方法)公开

    提供一个委托类方法,可以轻松地将包含对象的公共方法公开为您自己的。

    class Greeter < ActiveRecord::Base
      def hello
        'hello'
      end
    
      def goodbye
        'goodbye'
      end
    end
    
    class Foo < ActiveRecord::Base
      belongs_to :greeter
      delegate :hello, to: :greeter
    end
    
    Foo.new.hello   # => "hello"
    Foo.new.goodbye # => NoMethodError: undefined method `goodbye' for #<Foo:0x1af30c>
    

    这里有一些关于它如何与示例一起使用的其他解释:

    http://brettu.com/rails-daily-ruby-tip-20-use-the-delegate-method-in-rails-to-reduce-code/

    http://www.simonecarletti.com/blog/2009/12/inside-ruby-on-rails-delegate/

    http://pivotallabs.com/rails-delegates-are-even-more-useful-than-i-knew/

    【讨论】:

      【解决方案2】:

      代理可帮助您保持在 LoD 内,而不会阻碍 SRP。

      http://en.wikipedia.org/wiki/Law_of_Demeter

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-17
        • 2019-06-22
        • 1970-01-01
        • 2017-08-11
        • 2011-04-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多