Ruby迭代通过数组的方法名称

时间:2017-12-01 20:25:20

标签: 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.i  # problem evaluating i
end

我尝试过字符串插值和eval,但我无法理解它是一种方法调用。

有没有办法可以将数组作为方法名称应用于对象?

1 个答案:

答案 0 :(得分:3)

尝试使用public_send

atts = "upcase downcase".split

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

#HELLO
#hello