问题标签 [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.
ruby - instance_eval() 中定义的 Ruby 存储方法在哪里
这是一个例子:
MyClass 的实例方法不包含 'hello' 方法,所以我的问题是 Ruby 将 instance_eval() 中定义的方法存储在哪里?
ruby - instance_eval 不适用于 att_accessor?
谁能告诉我,为什么这不起作用:
我在做什么错?
ruby - class_eval 与 instance_eval
class_eval
除了 之外,工作方式和instance_eval
工作方式有什么不同def
吗?内部class_eval
块def
为类本身定义方法(即实例方法),内部块为类instance_eval
def
的特征类定义方法(即类方法)。AFAIK 所有其他功能在这两种情况下的工作方式相同(例如define_method
, attr_accessor
, class << self; end
, 定义常量)。这是真的吗?
答案是:def
和undef
和有不同的alias
上下文。class_eval
instance_eval
ruby - 在有限范围内修补内置 ruby 类的猴子
我正在开发一个内部 Ruby DSL,为了让它看起来尽可能漂亮,我需要修改 Symbol 类并添加一些运算符。我想负责我如何做到这一点,并希望将补丁的范围和生命周期限制为特定的代码块。有这样做的标准模式吗?这是一些伪代码来显示我的想法:
结尾
ruby - 未提供 Instance_eval 块?
有谁知道是什么导致了这个错误?我正在尝试制作一个基本的机架应用程序。
App.rb =>
Config.ru =>
编辑:显然我忘了包括错误呜呜声:
/local/www/cherry/lib/app.rb:12:in 'instance_eval': block not supplied (ArgumentError)
ruby - 为类实例变量定义 attr_accessor - Ruby
我正在尝试为类实例变量创建访问器。我attr_accessor
从类中包含的模块调用该方法。请看下面的代码:
上面的代码有效。但是,当我将调用的代码更改为attr_accessor
:
我明白了NoMethodError: undefined method `persistent_data='
两种方式不应该一样工作还是我的理解错了?我正在使用 REE 1.8.7
ruby - 为什么 instance_eval 以特殊方式处理直接访问器?
为什么以下代码不会引发错误:
正如您所料,以下内容会引发 NameError :
即使这样也会引发错误:
我已经在 1.8.7-p352 和 1.9.3-p194 上尝试过,结果相同。
ruby - 具有 attr_accessor 的类上的 Ruby instance_eval
instance_eval
我了解和之间的基本区别class_eval
。我在玩耍时发现了一些奇怪的东西attr_accessor
。这是一个例子:
这是怎么回事:
- instance_eval 没有访问我们的 A 类(对象)
- 然后它实际上将它添加到 A 的实例中?
ruby - 如何将方法传递给 instance_eval?
我想instance_eval
上这堂课:
传递这个方法b
:
但这正在发生:
什么时候b
是一个块它起作用,但b
作为一种方法不起作用。我怎样才能让它工作?
ruby - module_eval / class_eval / instance_eval 如何计算行号
我发现传递给 的 line_numberclass_eval
与module_eval
错误instance_eval
报告的行号不匹配。ruby-doc没有解释这种行为, 它说:(instance_eval
用作示例)
可选的第二个和第三个参数提供报告编译错误时使用的文件名和起始行号。
所有这三个方法class_eval
,module_eval
并instance_eval
接受两个额外的参数来指定文件名和 lineno 参数设置错误消息的文本。
这个问题有一个关于这种行为的实际演示。
但是,我发现行号的计算比解释更复杂。这是一个演示
上面的代码证明line_no
传递给的参数instance_eval
不是报错的行号,而只是与line_no
.
我想知道这个参数的确切行为?