问题标签 [instance-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 回答
148 浏览

ruby - instance_eval() 中定义的 Ruby 存储方法在哪里

这是一个例子:

MyClass 的实例方法不包含 'hello' 方法,所以我的问题是 Ruby 将 instance_eval() 中定义的方法存储在哪里?

0 投票
2 回答
141 浏览

ruby - instance_eval 不适用于 att_accessor?

谁能告诉我,为什么这不起作用:

我在做什么错?

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 投票
2 回答
337 浏览

ruby - 在有限范围内修补内置 ruby​​ 类的猴子

我正在开发一个内部 Ruby DSL,为了让它看起来尽可能漂亮,我需要修改 Symbol 类并添加一些运算符。我想负责我如何做到这一点,并希望将补丁的范围和生命周期限制为特定的代码块。有这样做的标准模式吗?这是一些伪代码来显示我的想法:

结尾

0 投票
1 回答
480 浏览

ruby - 未提供 Instance_eval 块?

有谁知道是什么导致了这个错误?我正在尝试制作一个基本的机架应用程序。

App.rb =>

Config.ru =>

编辑:显然我忘了包括错误呜呜声:

/local/www/cherry/lib/app.rb:12:in 'instance_eval': block not supplied (ArgumentError)

0 投票
0 回答
1061 浏览

ruby - 为类实例变量定义 attr_accessor - Ruby

我正在尝试为类实例变量创建访问器。我attr_accessor从类中包含的模块调用该方法。请看下面的代码:

上面的代码有效。但是,当我将调用的代码更改为attr_accessor

我明白了NoMethodError: undefined method `persistent_data='

两种方式不应该一样工作还是我的理解错了?我正在使用 REE 1.8.7

0 投票
1 回答
32 浏览

ruby - 为什么 instance_eval 以特殊方式处理直接访问器?

为什么以下代码不会引发错误:

正如您所料,以下内容会引发 NameError :

即使这样也会引发错误:

我已经在 1.8.7-p352 和 1.9.3-p194 上尝试过,结果相同。

0 投票
4 回答
2677 浏览

ruby - 具有 attr_accessor 的类上的 Ruby instance_eval

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

这是怎么回事:

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

ruby - 如何将方法传递给 instance_eval?

我想instance_eval上这堂课:

传递这个方法b

但这正在发生:

什么时候b是一个块它起作用,但b作为一种方法不起作用。我怎样才能让它工作?

0 投票
1 回答
502 浏览

ruby - module_eval / class_eval / instance_eval 如何计算行号

我发现传递给 的 line_numberclass_evalmodule_eval错误instance_eval报告的行号不匹配。ruby-doc没有解释这种行为, 它说:(instance_eval用作示例)

可选的第二个和第三个参数提供报告编译错误时使用的文件名和起始行号。

所有这三个方法class_evalmodule_evalinstance_eval接受两个额外的参数来指定文件名和 lineno 参数设置错误消息的文本。

这个问题有一个关于这种行为的实际演示。

但是,我发现行号的计算比解释更复杂。这是一个演示

上面的代码证明line_no传递给的参数instance_eval不是报错的行号,而只是与line_no.

我想知道这个参数的确切行为?