jjzjj

instance_exec

全部标签

ruby - @instance_variable 和 attr_accessor 的区别

我刚开始学习ruby​​,我看不出@instace_variable和使用attr_accessor声明的属性之间的区别。下面两个类有什么区别:classMyClass@variable1end和classMyClassattr_accessor:variable1end我在网上查了很多教程,每个人使用的表示法都不一样,这和ruby版本有什么关系吗?我还在StackOverflow中搜索了一些旧线程Whatisattr_accessorinRuby?What'stheDifferenceBetweenTheseTwoRubyClassInitializationDefinitions?

ruby - 使用带参数的 instance_eval 调用 proc?

我知道这行得通:proc=Proc.newdoputsself.hi+'world'endclassUsadefhi"Hello!"endendUsa.new.instance_eval&proc但是我想将参数传递给proc,所以我尝试了这个不起作用:proc=Proc.newdo|greeting|putsself.hi+greetingendclassUsadefhi"Hello!"endendUsa.new.instance_eval&proc,'world'#doesnotworkUsa.new.instance_eval&proc('world')#doesnotwork谁能

ruby-on-rails - 如何使用 Rails 中的 instance_eval 子句删除验证?

我想使用instance_eval增强现有类。原始定义包含验证,这需要存在某些字段,即:classDummytrueend现在我想使用instance_eval(或任何其他方法,真的)将其更改为可选:Dummy.instance_evaldo...end删除验证的正确语法是什么,因此该字段是可选的。我宁愿直接在模型层上这样做,而不是在Controller或View中进行奇怪的修改。instance_eval的使用并不是真正必需的,但据我所知,这通常是增强Rails类的最佳方式。编辑#1一般来说-原始类是gem的一部分,我不想fork它,也不想绑定(bind)到特定版本。一般原因并不重要

ruby - class_eval、class_exec、module_eval 和 module_exec 之间有什么区别?

我正在阅读Module文档,但似乎无法理解它们之间的差异以及应该在何处使用。eval与exec有何不同? 最佳答案 我将通过在您的问题中包含instance_{eval|exec}来回答您的问题。{instance|module|class}_{eval|exec}的所有变体都会更改当前上下文,即self的值:classArraypself#prints"Array"43.instance_eval{pself}#prints"43"end现在说说区别。eval版本接受字符串或block,而exec版本只接受block但允许您向其传

ruby-on-rails - RSpec any_instance 弃用 : how to fix it?

在我的Rails项目中,我使用rspec-mocks和any_instance但我想避免这个弃用消息:使用rspec-mocks的旧:should语法中的any_instance而不显式启用该语法已被弃用。使用新的:expect语法或明确启用:should。这是我的规范:describe(".create")doit'shouldreturnerrorwhen...'doUser.any_instance.stub(:save).and_return(false)post:create,user:{name:"foo",surname:"bar"},format::jsonexpect

ruby - 如何理解class_eval()和instance_eval()的区别?

Foo=Class.newFoo.class_evaldodefclass_bar"class_bar"endendFoo.instance_evaldodefinstance_bar"instance_bar"endendFoo.class_bar#=>undefinedmethod‘class_bar’forFoo:ClassFoo.new.class_bar#=>"class_bar"Foo.instance_bar#=>"instance_bar"Foo.new.instance_bar#=>undefinedmethod‘instance_bar’for#仅根据方法的名称,我

ruby-on-rails - rails : Should partials be aware of instance variables?

例如,RyanBates的nifty_scaffolding就是这样做的编辑.html.erb'form'%>new.html.erb'form'%>_form.html.erb那种隐藏的状态让我觉得不舒服,所以我通常喜欢这样做编辑.html.erb'form',:locals=>{:object=>@my_object}%>_form.html.erb那么哪个更好:a)让部分访问实例变量或b)传递部分它需要的所有变量?最近我一直选择b),但我确实遇到了一些问题:some_action.html.erb'partial',:locals=>{:son=>a_son}%>_partial

ruby Rspec : Testing instance variables without adding an accessor to source

我正在尝试测试以下方法:defunprocess_move(board,move)ifmove[0].instance_of?(Array)multi_move=@multi_move.pop(2).reversemulti_move.eachdo|single_move|unapply_move(board,single_move)endelseboard=unapply_move(board,move)endboardend我想为@multi_move设置状态,但我不想添加仅用于测试的访问器。有没有办法在没有访问器的情况下这样做?谢谢。 最佳答案

Ruby 元编程 : dynamic instance variable names

假设我有以下哈希:{:foo=>'bar',:baz=>'qux'}我如何动态设置键和值以成为对象中的实例变量...classExampledefinitialize(hash)...magichappenshere...endend...这样我就可以在模型中得到以下内容...@foo='bar'@baz='qux'? 最佳答案 您要找的方法是instance_variable_set.所以:hash.each{|name,value|instance_variable_set(name,value)}或者,更简单地说,hash.e

Ruby,exec、system 和 %x() 或反引号之间的区别

以下Ruby方法有什么区别?exec、system和%x()或Backticks我知道它们用于通过Ruby以编程方式执行终端命令,但我想知道为什么有三种不同的方法来执行此操作。 最佳答案 系统system方法调用系统程序。您必须将命令作为字符串参数提供给此方法。例如:>>system("date")WedSep422:03:44CEST2013=>true调用的程序将使用Ruby程序的当前STDIN、STDOUT和STDERR对象。事实上,实际的返回值是true、false或nil。在示例中,日期是通过STDIN的IO对象打印的。如