Jer*_*ten 0 ruby metaprogramming
我想写这个:
[:p, :h1, :h3].each do |tag|
define_method(tag) { |text| "<#{tag}>#{text}</#{tag}>" }
end
Run Code Online (Sandbox Code Playgroud)
这只是在HTML标记中包装文本的一些简单方法.我希望能够在脚本的其余部分中使用这些方法.不幸的是,该define_method方法似乎只在模块内部工作.但是如果我在一个模块中做到这一点,我将无法干净地写出来p "This is a paragraph.",HTML::p "This is a paragraph."这将是非常可怕的事情.
那么如何在全球范围内定义这样的方法呢?
如果你真的需要这样做:
[:p, :h1, :h3].each do |tag|
Object.send(:define_method, tag) { |text| "<#{tag}>#{text}</#{tag}>" }
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
983 次 |
| 最近记录: |