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中执行.
什么相当于"发送"为"::"?
const_get,但是你应该将常量名称作为符号传递
self.class.const_get(:"DEFAULT_#{gender.upcase}_NAME")
Run Code Online (Sandbox Code Playgroud)