Arrays Ruby在数组中迭代方法名

Arrays Ruby在数组中迭代方法名,arrays,ruby,loops,methods,Arrays,Ruby,Loops,Methods,我有一个对象,我想从中输出一组方法的结果。我有一个方法名数组,希望遍历它们: img = Magick::Image::read('/Users/rich/Projects/imagemagick/orig/IMG_4677.jpg')[0] atts = "background_color base_columns base_filename base_rows bias black_point_compensation".split(' ') atts.each do |i| puts

我有一个对象,我想从中输出一组方法的结果。我有一个方法名数组,希望遍历它们:

img = Magick::Image::read('/Users/rich/Projects/imagemagick/orig/IMG_4677.jpg')[0]
atts = "background_color base_columns base_filename base_rows bias black_point_compensation".split(' ')

atts.each do |i|
  puts img.i  # problem evaluating i
end
我尝试过字符串插值和
eval
,但我无法让它意识到这是一个方法调用

是否有一种方法可以将数组作为方法名应用于对象?

尝试使用:

尝试使用:


完美的非常感谢,回答得很好。请记住,
#public#u send
#send
相比的最大优势在于您不会意外调用私有方法,因此它应该是您的默认方法,除非您有很好的理由这样做。完美。非常感谢,回答得很好。请记住,
#public#u send
#send
相比的最大优势在于,您不会意外调用私有方法,因此它应该是您的默认方法,除非您有很好的理由这样做。更合适的语法应该是
%w(背景色基列基文件名基行偏黑点补偿)
%i(背景颜色基础、列基础、文件名基础、行偏黑、点补偿)
%w()
表示以空格分隔的列表,并将转换为基于
数组的
字符串(基本上与
拆分(“”)
%i()
相同,但将转换为基于
符号的
数组
,前提是项目符合相应的
符号
命名约定我遇到了问题,因此我运行了.split(“”)。是的,您是正确的。
%i
可能更好,因为字符串将在内部转换为符号用于方法查找。可能更有效一些更合适的语法应该是
%w(背景色基列基文件名基行偏黑点补偿)
%i(背景色基列基文件名基行偏黑点补偿)
%w()
表示以空格分隔的列表,并将转换为基于
数组的
字符串(基本上与
拆分(“”)
%i()
相同,但将转换为基于
符号的
数组
,前提是项目符合相应的
符号
命名约定我遇到了问题,因此我运行了.split(“”)。是的,您是正确的。
%i
可能更好,因为字符串将在内部转换为符号用于方法查找。也许效率会稍微高一点
atts = "upcase downcase".split

atts.each do |i|
  puts 'hEllO'.public_send(i)
end

#HELLO
#hello