【发布时间】:2016-02-24 22:25:03
【问题描述】:
我现在正在学习 ruby 元编程,当我在玩耍和测试东西时,我偶然发现了一些我似乎无法找到答案的东西。假设我们有以下代码:
class Foo
end
Foo.instance_eval do
define_method("bar") do
1
end
end
我希望这会向Foo 添加一个名为bar 的类方法,但是当我调用该方法时,它却说它是未定义的。更让我困惑的是,当我使用def 而不是define_method 时,相同的代码仍然有效。当我尝试使用class_eval 定义实例方法时,这两种方法似乎都有效。那么这里到底发生了什么?
提前致谢。
【问题讨论】:
-
我在发布我的帖子之前阅读了该帖子,但我不明白。
-
那道题的题目和这道题几乎一样,但题目不一样。此外,该问题的检查答案过于简洁,无法很好地回答 this 问题。由于这些原因,我认为不应将此问题标记为与该问题重复。
标签: ruby metaprogramming class-method