问题标签 [class-eval]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
299 浏览

ruby - 如何使数组仅在第一次调用函数时初始化?

我想制作 attr 访问器,它将记录数组中所有写入的历史记录,但问题出在 class_eval 中,数组每次都被初始化,因此它不保存旧值。

我应该做些什么改变?

0 投票
1 回答
265 浏览

ruby - 在 Ruby 中扩展类(def 与 class_eval)

似乎 class_eval (将字符串转换为代码)和用新的 def 方法声明类本质上是一回事。

它们真的是等价的吗?各自的优缺点是什么?

0 投票
2 回答
1561 浏览

ruby - class_eval 与 instance_eval

class_eval除了 之外,工作方式和instance_eval工作方式有什么不同def吗?内部class_evaldef为类本身定义方法(即实例方法),内部块为类instance_eval def的特征类定义方法(即类方法)。AFAIK 所有其他功能在这两种情况下的工作方式相同(例如define_method, attr_accessor, class << self; end, 定义常量)。这是真的吗?

答案是defundef和有不同的alias上下文。class_evalinstance_eval

0 投票
1 回答
306 浏览

ruby - 类评估块内的正则表达式错误

我有一些代码可以从简单的定义中将方法添加到模块中,以便通过 REST 客户端周围的包装类与远程资源进行对话。

在我什至可以运行代码之前,只需要我在 IRB 中构建的 gem 就会吐出​​这个错误:

违规行是:

删除“#{uri}”参数可以修复它,甚至保留“#{method}”参数。有没有人知道为什么会这样?我快束手无策了。

0 投票
1 回答
841 浏览

ruby - Ruby 元编程:将@variables 添加到现有的“初始化”方法(使用 class_eval)

可能重复:
Ruby.Metaprogramming。class_eval

我有这个小项目,目标是创建一个“attr_accessor_with_history”方法,它将记录分配给它创建的变量的每个值。这是代码:

现在,当我为一个变量测试脚本时。它工作正常。但是当我尝试创建两个或更多变量时(像这样)......

....Ruby 为 (class_eval) bar_history.push(new_value) 提供了一个“不存在的‘push’方法”。我认为“初始化”方法在 attr_accessor_with_history 的第二次调用中被覆盖,因此第一个变量的记录被破坏。

我不知道如何解决这个问题。我已经尝试调用 'super' 。有什么线索吗?

0 投票
1 回答
58 浏览

ruby - 无法破译此包含地图运算符的 Ruby 行

我刚刚在ruby​​-trello中看到了这行 Ruby 代码:

它似乎与定义为的超类方法有关:

我知道class_eval与反射有关。

有人可以解释子类代码行的目的吗?

我的猜测是它调用类成员作为名称one传递:member_creator,两个尾随参数作为opts参数。但是为什么要在类级别调用呢?

0 投票
1 回答
209 浏览

ruby - class_eval 的 Ruby 问题

我正在尝试运行以下命令,但我不断收到

“NoMethodError:#/Foo:0x86f69ba/ 的未定义方法 `bar='”

我实际上正在使用类似于这篇文章的内容:Ruby - Using class_eval to define methods

编辑:你说得对,我做出了改变来反映这一点..非常感谢。

0 投票
1 回答
172 浏览

ruby - 使用 class_eval 创建方法

我想写一个方法,它接受一个参数并创建另一个方法,用这个参数命名。这是我的代码

不幸的是,respond_to?(:foo)评估为false. 怎么了?

0 投票
4 回答
2677 浏览

ruby - 具有 attr_accessor 的类上的 Ruby instance_eval

instance_eval我了解和之间的基本区别class_eval。我在玩耍时发现了一些奇怪的东西attr_accessor。这是一个例子:

这是怎么回事:

  1. instance_eval 没有访问我们的 A 类(对象)
  2. 然后它实际上将它添加到 A 的实例中?
0 投票
3 回答
126 浏览

ruby - 类 eval 通过引用传递类变量

以下代码片段:

类变量正在共享。

结果:

222 222