草庐IT

instance-eval

全部标签

javascript - 为什么使用 JavaScript eval 函数是个坏主意?

eval函数是一种强大而简单的动态生成代码的方法,那么有哪些注意事项呢? 最佳答案 eval使用不当会打开你的注入(inject)攻击代码调试可能更具挑战性(没有行号等)eval代码执行速度较慢(没有机会编译/缓存eval代码)编辑:正如@JeffWalden在评论中指出的那样,今天的#3不如2008年那么正确。但是,虽然可能会缓存已编译的脚本,但这只限于使用eval重复的脚本没有修改。更有可能的情况是,您正在评估每次都经过轻微修改的脚本,因此无法缓存。假设某些经过评估的代码执行得更慢。

asp.net - 格式化 DataBinder.Eval 数据

如何格式化来自ASPX页面中DataBinder.Eval语句的数据?例如,我想在主页中以特定格式显示新闻项目的发布日期。我正在使用ASP.NET2.0Repeater控件来显示新闻项目列表。代码如下:'>'>'>有没有一种方法可以调用自定义方法,并将DataBinder.Eval值作为其参数(如下所示)?'>如果是,那么我在哪里编写GetDateInHomepageFormat方法?我在页面后面的代码中进行了尝试,但出现了运行时错误?如果这不可能,有没有办法进行内联格式化? 最佳答案 DataBinder.Eval有一个可选的重载

java - 是什么导致错误 "No enclosing instance of type Foo is accessible",我该如何解决?

我有以下代码:classHello{classThing{publicintsize;Thing(){size=0;}}publicstaticvoidmain(String[]args){Thingthing1=newThing();System.out.println("Hello,World!");}}我知道Thing什么都不做,但是没有它我的Hello,World程序编译得很好。只有我定义的类在我身上失败了。它拒绝编译。我得到NoenclosureinstanceofHelloisaccess."在创建新事物的行。我猜是:我有系统级问题(在DrJava或我的Java安装中)或我

ruby - 使用 class_eval 创建方法

我想写一个方法,它接受一个参数并创建另一个方法,用这个参数命名。这是我的代码classClassdefcreateMethod(attr_name)attr_name=attr_name.to_sclass_eval%Q{def#{attr_name}puts"bar"end}endendpClass.new.createMethod("foo").respond_to?(:foo)不幸的是,respond_to?(:foo)的计算结果为false。怎么了? 最佳答案 这是因为class_eval是一个类方法,您在实例的上下文中调用

ruby - :id when creating new instance 的委派

我有三个模型:classCompany:employeesendclassEmployee:employee,:prefix=>true,:allow_nil=>trueend这工作得很好,我可以在我看来调用dog.employee_id。但是,如果我想在RailsAdmin中创建一个新实例(而不是在编辑现有对象时),我会收到此错误:RuntimeErrorat/dog/newCalledidfornil,whichwouldmistakenlybe4--ifyoureallywantedtheidofnil,useobject_id:allow_nil设置为true,其他属性的委托(

ruby /IRB : set instance variable to private or otherwise invisible?

在Ruby中,当我做这样的事情时:classFoo...definitialize(var)@var=varend...end然后,如果我在控制台中返回一个foo,我会得到这个对象表示:#有时我有一个实例变量,它是一个长散列或类似的东西,这使得读取对象的其余部分变得更加困难。我的问题是:有没有一种方法可以将对象中的实例变量设置为“私有(private)”或不可见,这样它就不会被打印为对象表示的一部分,如果该对象在控制台返回?谢谢! 最佳答案 经过一些快速搜索,我认为Ruby不支持私有(private)实例变量。最好的办法是覆盖对象的

ruby - class_eval 如何将参数传递给方法

在以下情况下如何传递参数名称..在传递给class_eval之前评估名称classFooendFoo.class_eval%Q{defhello(name)p"hello#{name}"end}抱歉没有给出整个场景...我只是想动态地向类添加一个实例方法,并且该方法应该能够接受参数......上面的代码不会编译提示在irb中执行时名称未定义为局部变量..谢谢 最佳答案 其他答案是“正确”答案,但您也可以跳过p内的插值调用:Foo.class_eval%Q{defhello(name)p"hello\#{name}"end}我以为你想

ruby - 如何将 block 传递给 `instance_eval` -ed block ?

我想将一个block传递给一个像这样instance_eval的block,instance_eval(&block){puts"test"}其中block被定义为包含如下内容:puts"Incomingmessage:"yield这可能吗?我发现了一种使用光纤执行此操作的方法,但我首先尝试使用yield。看着thisquestion,看起来这可能是不可能的,但我想确认一下。 最佳答案 这确实很奇怪。为什么是instance_eval?它通常用于改变self,并在接收者的上下文中进行评估。cat=String.new('weirdc

ruby - 在不创建 block 作用域的情况下运行 eval

我正在尝试理解Ruby中的eval和绑定(bind)上下文。在irb中考虑以下内容irb(main):001:0>eval"a=42"=>42irb(main):002:0>aNameError:undefinedlocalvariableormethod`a'formain:Objectfrom(irb):2from/Users/niels/.rbenv/versions/2.1.3/bin/irb:11:in`'irb(main):003:0>为什么a没有定义?如果我在评估之前声明a,则值42会分配给a。在我看来,某种block作用域适用于局部变量在eval上下文中可用的情况,但声

ruby-on-rails - class_eval 的类级变量的替代方案?

我对使用class_eval的Ruby变量范围的最佳实践有疑问。在这段代码中,在class_evalblock中,局部变量first和second是未定义的。defparent_method(opts={})first=opts[:percent]second=(10*first).to_iSecondClass.class_evaldodefsecond_method;return{:a=>first,:b=>second};end;endend这似乎是一个范围界定问题,因为我发现让它起作用的唯一方法是创建第一类和第二类级别的变量:defparent_method(opts={})@