gpt4 book ai didi

ruby - 使用 class_eval ruby​​ 时堆栈级别太深 (SystemStackError)

转载 作者:数据小太阳 更新时间:2023-10-29 08:16:03 27 4
gpt4 key购买 nike

不明白为什么我运行这个程序时堆栈级别太深。

module A
class Fruit

def initialize
puts "pears"
end

[:orange, :apple].each do |fruit|
class_eval %Q{
def #{fruit}
puts #{fruit}
end
}
end

puts "pineapple"
end

a_fruit = Fruit.new
a_fruit.apple
end

another_fruit = A::Fruit.new
another_fruit.orange

这个程序的输出是

(eval):3:in `apple': stack level too deep (SystemStackError)
from (eval):3:in `apple'
from testquestion.rb:20

最佳答案

class_eval %Q{
def #{fruit}
puts #{fruit}
end
}

让我们看看这对 fruit = :apple 的扩展:

def apple
puts apple
end

现在应该清楚为什么会导致无限递归了。

关于ruby - 使用 class_eval ruby​​ 时堆栈级别太深 (SystemStackError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8112997/

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