在方法内部使用与其define_method行相同的字符串插值

时间:2015-12-11 03:40:51

标签: ruby

Ruby Monk中的红利问题

  

创建一个可以冥想生命,宇宙或者冥想的僧侣   一切。它应该有三种方法meditate_on_life,   meditate_on_the_universe& meditate_on_everything并返回字符串   “我知道生命的意义”,“我知道宇宙的意义”,   和“我知道一切的意义”,分别。

在本章以前的问题的基础上,看起来应该是这样的

class Monk
  ["life", "the_universe", "everything"].each do |element|
    define_method("meditate_on_#{element}").each do |argument|
      "I know the meaning of #{element.gsub('meditate_on_', '').gsub('_', ' ')}"
    end
  end
end

在定义的方法中使用该字符串的正确方法是什么

1 个答案:

答案 0 :(得分:3)

几乎。 define_method(....).each没有意义。这些方法似乎不需要任何参数。此外,element不包含meditate_on_,因此无需将其删除。

class Monk
  ["life", "the_universe", "everything"].each do |element|
    define_method("meditate_on_#{element}") do
      "I know the meaning of #{element.gsub('_', ' ')}"
    end
  end
end
Monk.new.meditate_on_life
# => "I know the meaning of life"