delegate

メソッドの委譲 (delegation) を行うためのライブラリ。

参考:

library delegate (Ruby 2.6.0)

Ruby の委譲標準ライブラリのまとめ – Qiita

Delegator

サブクラスにメソッド委譲の仕組みを提供する抽象クラス。メソッド委譲を行う場合は本クラスを継承し、Delegator#__getobj__ を再定義する必要がある。具体的な使用例については SimpleDelegator を参照のこと。

参考:

class Delegator (Ruby 2.6.0)

class SimpleDelegator (Ruby 2.6.0)

Forwardable

参考:

module Forwardable (Ruby 2.5.0)

instance method Forwardable#delegate (Ruby 2.6.0)

instance method Forwardable#def_delegator (Ruby 2.6.0)

instance method Forwardable#def_delegators (Ruby 2.6.0)

SingleForwardable

参考:

module SingleForwardable (Ruby 2.6.0)

instance method SingleForwardable#def_delegator (Ruby 2.6.0)

instance method SingleForwardable#def_delegators (Ruby 2.6.0)

delegate / def_delegator / def_delegators の使い方

class LineItem
  extend Forwardable

  attr_reader :id

  # Use alias name product_id to avoid overwriting LineItem#id
  def_delegator :@product, :id, :product_id
  def_delegators :@product, :sku, :name, :description, :price
end

参考:

メソッドの委譲機能 – Qiita

Delegation patterns in Ruby | O’Reilly Radar

instance method Forwardable#delegate (Ruby 2.6.0)

instance method Forwardable#def_delegator (Ruby 2.6.0)

instance method Forwardable#def_delegators (Ruby 2.6.0)

instance_delegate – ruby/forwardable.rb at v2_6_2 · ruby/ruby – GitHub

def_instance_delegator – ruby/forwardable.rb at v2_6_2 · ruby/ruby – GitHub

def_instance_delegators – ruby/forwardable.rb at v2_6_2 · ruby/ruby – GitHub

定数を delegate する

参考:

Can I use Forwardable to delegate a constant in Ruby? – Stack Overflow

Module#delegate

Active Support (Ruby on Rails) による拡張。

参考:

delegate – Module | Ruby on Rails API [Official]

rails/delegation.rb at v5.2.2.1 · rails/rails – GitHub

SimpleDelegator 使用時に自動読み込みさせる (Ruby on Rails)

参考:

SimpleDelegator autoloading issues with Rails | The Pug Automatic

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です