我在Ruby中的方法遇到了一个小问题。 “information”是我想要迭代的哈希,必要时格式化值并保存带有格式化/更改对的新哈希。以下内容:
formatted_information = {}
information.each do |key, value|
formatted_information[:"#{key}"] = self.send("format_#{key}(#{value})")
end
应该在处理格式化的同一文档中调用另一个方法(因此如果找到键“name”,它应该运行带有相应值的“format_name”)。虽然该方法存在,但我收到以下错误:
NoMethodError:未定义的方法`format_name(“Some Name”)'
我在这里犯了什么错误?
可能的输入: information = {:name => “一个名字”}
预期产量: formatted_information = {:name => “B名”}
答案 0 :(得分:2)
send
接受方法名作为第一个参数,并将该方法的参数作为第二个参数。你应该使用
send("format_#{key}", value)