ruby 可转发を使った代表パターン

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 可转发を使った代表パターン相关的知识,希望对你有一定的参考价值。

require 'forwardable'

class DelegateTarget
  def method_1
    p 'target_1 called'
  end

  def method_2
    p 'target_2 called'
  end

  def method_3
    p 'target_3 called'
  end

  def method_4
    p 'target_4 called'
  end

  def self.class_method
    p 'Class method called'
  end
end

class Foo
  extend Forwardable

  # method_1をfoo_method_1として定義して処理は@target.method_1に委譲する
  def_delegator :@target, :method_1, :foo_method_1

  # メソッド名は変えずに委譲するメソッドを複数定義
  def_delegators :@target, :method_2, :method_3

  # クラスメソッドにも委譲できるがFooのクラスメソッドにはならずインスタンスメソッドになる
  def_delegator DelegateTarget, :class_method

  def initialize(target)
    @target = target
  end

  def method_4
    p 'Foo process'
    @target.method_4
  end
end

foo = Foo.new(DelegateTarget.new)
foo.foo_method_1
foo.method_2
foo.method_3
foo.method_4
foo.class_method

以上是关于ruby 可转发を使った代表パターン的主要内容,如果未能解决你的问题,请参考以下文章

html UIkit3を使ったサインインフォーム

html 的jQueryを使ったソートサンプル②(カスタムデータ属性利用)

html Flexbox的を使ったブロック型ナビゲーションメニュー

sh 卷曲的wgetやを使ったダウンロードの便利机能

python SPTKを使った简単なボイスチェンジャー

ruby テキストから日本语を抜き出す正规表现。失败パターン,成功パターン