为调用方的参数值分配默认参数值



如何将调用方参数的值分配为参数的默认值?我希望方法Callme#callme将调用者方法TheCaller#callername参数的值作为默认参数值。

module Callme
  def callme(hero = name)
    hero
  end
end
class TheCaller
  include Callme 
  def caller(name)
    callme
  end
end
say = TheCaller.new
say.caller("superman")
# => expecting "superman"
我知道没有

隐式的方法可以做到这一点。 你最好的选择是只通过参数

class TheCaller
  include Callme
  def caller(*args)
    callme(*args)
  end
end

也许我不明白这个问题,但是向 TheCaller 添加一个名称访问器似乎使这项工作按预期进行:

module Callme
  def callme(hero = name)
    hero
  end
end
class TheCaller
  attr_accessor :name
  include Callme 
  def caller(name)
    @name = name
    callme
  end
end
say = TheCaller.new
p say.caller("superman")
# => "superman"

最新更新