问题标签 [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 - 为什么第二个 'p arg' 报告 Foo 实例?
为什么第二个 ' p arg
' 报告 Foo 实例?它不应该报告nil
,因为with_instance_eval
它不屈服于self
区块吗?
ruby - ruby 元编程-yield 块在动态添加的方法中不起作用
我正在扩展NotAMock框架以在 rspec 中存根方法,并使存根屈服于方法块。
当我自己编写代码时,这个 Gist 中的代码可以完美运行(完成后类似于 NotAMock 存根方法)。
但是当我将 object.instance_eval... 代码合并到 NotAMock 框架中时,“block_given?” 总是返回 false ,因此我永远无法让我的收益正常工作。该方法已正确添加,我可以调用存根方法......但它不会识别我从 NotAMock 存根版本传递给该方法的块。
要查看我如何将此代码合并到 NotAMock 框架中,请转到我的 NotAMock 克隆并查看私有方法中的“add_hook”方法。
我知道这有点多问......我希望能找到一些指导。一整天都让我发疯。
ruby - Ruby - 可以将块作为参数作为实际块传递给另一个函数吗?
这就是我想要做的:
在它说“instance.instance_eval{block.call}”的那一行,我试图找到另一种方法来让新的实例变量在块上运行实例eval。我能想到的唯一方法是传递 instance_eval 原始块,而不是作为变量或任何东西,而是作为测试示例中的真实块。
有小费吗?
ruby - Ruby:常量查找如何在 instance_eval/class_eval 中工作?
我正在通过 Pickaxe 1.9 工作,我对 instance/class_eval 块中的常量查找有点困惑。我正在使用 1.9.2。
似乎 Ruby 在 *_eval 块中处理常量查找的方式与它处理方法查找的方式相同:
- 在receiver.singleton_class(加上mixins)中寻找定义;
- 然后在receiver.singleton_class.superclass(加上mixins);
- 然后继续沿特征链向上直到到达
#<Class:BasicObject>
; - 其超类是 Class;
- 然后沿着祖先链的其余部分(包括
Object
,它存储您在顶层定义的所有常量),沿途检查混入
这个对吗?Pickaxe 的讨论有点简洁。
一些例子:
在 class_eval 示例中,Foo-the-class 并不是 Foo-the-object 的祖先链的一个停止点!
还有一个 mixins 的例子:
ruby - 使用 class_eval 和 instance_eval 访问 Ruby 类变量
我有以下内容:
为什么以下工作:
但是我不能@@b
直接访问?
同样,以下作品
但以下失败
我不明白为什么我不能直接从instance_eval
块中访问类变量。
ruby - 在 Ruby 中通过 instance_eval 调用块时,动态添加的访问器分配不起作用
我有一个在运行时动态添加属性访问器的类。此类构成 DSL 的一部分,其中块被传递给配置方法并使用 instance_eval 调用。这使得在 DSL 中可以在引用类的方法时删除对“self”的引用。
但是,我发现我可以引用属性来检索它们的值,但无法分配它们,除非明确引用 self,如下面的代码示例所示。
谁能解释为什么这不符合预期?
ruby - Ruby 1.9.2 中的 instance_eval 定义在哪里?
原谅我的无知,但我必须在这里遗漏一些东西。我可以在课堂上找到 ruby 1.8.7 的instance_evalObject
的文档,但我无法在任何地方找到1.9.2的文档。我知道该功能仍然受支持,因为我正在使用它。是否有一些秘密的父类已被移至?
ruby - 在 REPL 或 irb 中重用 Ruby DSL?
我为 jruby 中的 UniVerse 数据库上的任务开发了一个简单的 DSL。它看起来像这样
并像这样实现
我知道您可以像这样在 ruby 脚本中使用 irb
但是有没有办法放到命令行并更改范围以默认执行对象的实例方法?
例如
ruby - Ruby instance_exec / instance_eval 带参数
我正在尝试使用同一字符串中给出的参数动态调用字符串中给出的方法,但我一直坚持提供参数...
我目前有:
所以方法名称是 input(0) 并且这个方法的参数在输入的其余部分。有没有办法用这些参数调用这个方法?
ruby-on-rails - Ruby/Rails:class_eval 不想评估此代码
为了为 Omniauth 生成模拟,我将此方法添加到config/environments/development.rb
然后我调用同一个文件:
但我得到: