gpt4 book ai didi

ruby 性能 : define method with define_method or eval

转载 作者:数据小太阳 更新时间:2023-10-29 06:59:28 25 4
gpt4 key购买 nike

在查看 ActiveSupport 源代码时,我注意到有时 eval 用于 define_method 就足够的地方。

示例:ActiveSupport: Module.delegate

我认为 define_method 是一种更干净、更安全的做事方式。eval 相对于 define_method 有什么好处?性能、内存使用情况还是其他?

最佳答案

当您使用 define_method 时,您正在定义的方法 can't accept a block .

It’s pretty well known that because of a deficiency in blocks arguments in Ruby 1.8 Class#define_method cannot define methods that take blocks.

def x *args, █ end  # => works!
define_method(:x) {|*args,&block| } # => SyntaxError: compile error

被定义的方法需要一个 block :

"def #{prefix}#{method}(*args, &block)" # def customer_name(*args, &block)

所以不能使用define_method。

关于 ruby 性能 : define method with define_method or eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6568792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com