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

时间:2011-12-13 00:06:14

标签: 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

这不起作用,因为“self.class.send”最终调用User.DEFAULT_MALE_NAME,我希望它在那里发送User :: DEFAULT_MALE_NAME。

“::”的“发送”相当于什么?

1 个答案:

答案 0 :(得分:5)

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

self.class.const_get(:"DEFAULT_#{gender.upcase}_NAME")