草庐IT

Hap-Eval

全部标签

带有 instance_eval 的 Ruby block 作用域

我对Rubyblock和过程的理解是它们都是闭包。既然我已经看到它与instance_eval一起使用,我有点困惑。与使用instance_eval相比,在查看裸机时改变block作用域在最常见用途下的行为方式的魔术酱是什么?这是一个示例,您可以在IRB中转储以了解我的意思。我已经包含了一个proc.call和blockyield版本示例。令人高兴的是,它们的行为方式相同。#Testingblock/procandevalclassExampledefinitialize(value)#valuedefinedintheinstance@value=valueenddefcall_a_

ruby - 如何测量 eval "def ..."和 define_method 的性能

在进行RubyMonk中的练习时(付费专区后面的链接,因此未提供),为了衡量使用eval定义方法的性能与define_method相比,以下内容提供代码:require'benchmark'classMonkeval"defzen;end"define_method(:zen_block){}endmonk=Monk.newBenchmark.bmbmdo|x|x.report("evalzen:"){1_000_000.times{monk.zen}}x.report("define_methodzen:"){1_000_000.times{monk.zen_block}}end作为

ruby - 为 eval 字符串化数组

我正在准备一个将被eval处理的字符串。该字符串将包含一个从现有Array构建的子句。我有以下内容:defstringify(arg)return"['"+arg.join("','")+"']"ifarg.class==Array"'#{arg}'"enda=['a','b','c']eval_str='p'+stringify(a)eval(eval_str)打印字符串["a","b","c"]。有没有更惯用的方法来做到这一点?Array#to_s没有削减它。有没有办法将p方法的输出分配给变量?谢谢! 最佳答案 inspect应

ruby - 使用 eval 进行变量赋值

使用eval分配实例变量工作正常,而另一个则不然。试图了解这里发生的事情。感谢您的帮助。>>var="avalue"=>"avalue">>@v=>nil>>eval"@v=var"=>"avalue">>@v=>"avalue">>eval"var_new=var"=>"avalue">>var_newNameError:undefinedlocalvariableormethod`var_new'formain:Objectfrom(irb):7fromC:/Ruby193/bin/irb:12:in`' 最佳答案 eval有它

ruby - Ruby 中 eval 的替代方法是什么?

我编写了以下递归函数来解析一些设置并正确填充我拥有的一些日志文件对象。当我针对CodeClimate运行此代码时,它告诉我(当然)不鼓励使用eval。有没有办法重写这个方法,这样我就不需要eval也不需要case语句了?什么都没想到。defparse(settings,logfile=nil)settings.eachdo|key,value|ifvalue.is_a?(Hash)logfile=Logmsg::LogFile.newparse(value,logfile)elseeval("logfile.#{key}=value")endendend有什么想法吗?我正在尝试inst

ruby-on-rails - 如何在 Rails 3.2 erb 中使用 eval 在运行时执行存储在字符串中的 View 代码?

我们正在尝试做的是存储一大块erbstring中的代码然后在运行时执行代码。这是我们所做的测试:从工作erb文件中取出一大块代码,用eval重写erb文件。这是取出来的erb代码块:#t()是国际化的翻译方法。重写后的erb文件如下:在重写之前,代码块在之间。.现在变量code返回string代码块和eval执行代码块。但这是错误:(eval):1:syntaxerror,unexpected'^Extractedsource(aroundline#6):4:5:6:7:8:9:上面的代码有什么问题? 最佳答案 eval通过评估ru

ruby - Instance_eval 不适用于 do/end block ,仅适用于 {} block

这个问题在这里已经有了答案:Rubyblockandunparenthesizedarguments(1个回答)RubyBlockSyntaxError[duplicate](1个回答)关闭8年前。如果我有一个类:classKlassWithSecretdefinitialize@secret=99endend然后运行:putsKlassWithSecret.new.instance_eval{@secret}它打印99,但如果我运行:putsKlassWithSecret.new.instance_evaldo@secretend它返回一个错误:`instance_eval':参数数

ruby-on-rails - ruby 装饰器和类 eval 之间有什么区别?

嘿,我目前正在从事一个集成Spree和Refinery的项目。Spree建议许多修改是使用他们所谓的装饰器完成的:Refinery::Page.class_evaldodefautocomplete_labeltitleendattr_accessible:spree_taxon_idhas_one:spree_taxonend这很好用。但是直接打开类和直接添加方法有什么区别呢?classRefinery::Pagedefautocomplete_labeltitleendattr_accessible:spree_taxon_idhas_one:spree_taxonend我可以理解

ruby-on-rails - 在ruby中使用class_eval时,如何访问原始类中的常量?

我想使用class_eval扩展一个类,在尝试访问原始类中的常量时,我​​收到一条错误消息:NameError:未初始化常量HIS_CONSTANT来自./my_module.rb:35:in`show_his_constant'来自(IRB):4我用示例程序测试过,但无法正常工作。有人可以检查一下为什么这不起作用吗?谢谢!moduleMyModuleputs"startmymodule"defmytestputs"mytest"endmoduleYourModuledefyourtestputs"yourtest"endendendmoduleMyModulemoduleYourMo

ruby - 是否可以在 `class_eval` 中定义类方法?

我知道可以使用class_eval定义实例方法。是否可以在class_eval的上下文中定义类方法? 最佳答案 是的,这是可能的:classFooendFoo.class_evaldodefself.barputs"I'maclassmethoddefinedusingclass_evalandself"enddefbazputs"I'maninstancemethoddefinedusingclass_evalwithoutself"endendFoo.bar#=>"I'maclassmethoddefinedusingclass