什么是范围分辨率运算符的"发送"等价物?

amb*_*tch 3 ruby

class Person
  DEFAULT_MALE_NAME = "Joe"
  DEFAULT_FEMALE_NAME = "Jane"

  def give_default_name
    self.name = self.class.send("DEFAULT_#{gender.upcase}_NAME")
  end

end
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为"self.class.send"最终调用User.DEFAULT_MALE_NAME,我希望它在User :: DEFAULT_MALE_NAME中执行.

什么相当于"发送"为"::"?

Gar*_*eth 5

const_get,但是你应该将常量名称作为符号传递

self.class.const_get(:"DEFAULT_#{gender.upcase}_NAME")
Run Code Online (Sandbox Code Playgroud)