委托给一个类方法

Sig*_*Sig 4 ruby

Ruby中是否可以委托另一个类的类方法来替换下面的方法?

def sugar(param)
  Klass.a_very_long_method_name(param)
end
Run Code Online (Sandbox Code Playgroud)

我试过用 Forwardable

   extend Forwardable
   def_delegator 'Klass.a_very_long_method_name', :sugar
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.

我发现自己要Klass.a_very_long_method_name在很多地方打电话,我正在努力让事情干涸.

Car*_*and 5

require 'forwardable'

class Klass
  def self.a_very_long_method_name(name)
    puts "Hi, #{name}"
  end
end

class Sugar
  extend Forwardable
  def_delegator Klass, :a_very_long_method_name, :verrry_long
end

s = Sugar.new
s.verrry_long "Sue"
  # Hi, Sue
Run Code Online (Sandbox Code Playgroud)

In def_delegator Klass, :a_very_long_method_name, :verrry_long,Klass是消息转发的接收者,:a_very_long_method_name是要转发的消息,是消息:verrry_long的别名:a_very_long_method_name.