gpt4 book ai didi

ruby - 具有类继承的错误未初始化常量

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

很明显,我对 ruby​​ 的理解有些不对劲。我有 3 个 ruby​​ 文件 main、base 和 derived。我有两个类 Derived 专门来自 Base

/bin/main.rb

require './lib/base'

/lib/base.rb

require './lib/derived'
class Base

end

/lib/derived.rb

require './lib/base'
class Derived < Base

end

使用 rake ruby './bin/main.rb' 运行

 `<top (required)>': uninitialized constant Base (NameError)

是什么导致了错误?

编辑: 我刚刚意识到我遗漏的一点是我忘记了 require 是一个 Kernel#method,我不需要像通常使用其他语言那样每次都掌握我的代码。

最佳答案

这里的问题是 /lib/base.rb 文件中的 require './lib/derived' 实际上导致了 /lib/derived在 /lib/base.rb 中声明 Base 之前要解析的 .rb。试试这个,而不是:

/bin/main.rb

require './lib/base'
require './lib/derived'

puts 'Success!'

/lib/base.rb

class Base

end

/lib/derived.rb

require './lib/base'
class Derived < Base

end

这允许声明以正确的顺序发生。

作为旁注,在 lib/main.rbrequire './lib/base' 在技术上没有必要,因为它实际上已成功包含在lib/derived.rb,但如果在 lib/main.rb 的主体中直接使用 Base 是一种很好的形式。

关于ruby - 具有类继承的错误未初始化常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36929525/

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