gpt4 book ai didi

ruby - 在 ruby​​ 中包含模块

转载 作者:太空宇宙 更新时间:2023-11-03 17:41:37 25 4
gpt4 key购买 nike

我是 ruby​​ 的初学者,我搜索过是否有人问过类似的问题但找不到任何问题。所以我在这里问。

我正在尝试用 ruby​​ 编写模块。

我创建了一个文件夹Project

在项目文件夹中,创建了一个类

class Project::One

include Project::Rest

end

在项目文件夹中,创建了一个模块 Rest

module Project::Rest

def display
puts "in display"
end

end

但是当我尝试运行程序(ruby one.rb)时,我得到了

未初始化的常量项目(NameError)

请帮帮我

最佳答案

问题是您从未真正定义Project 常量。您必须先定义它,然后才能使用它。示例:

# root.rb
module Project
end
require "project/test"

# project/test.rb
class Project::Test
end

然后您应该能够运行 ruby root.rb。另一种方法是在命名空间中声明模块。

# root.rb
require "project/test"

# project/test.rb
module Project
class Test
end
end

在这个例子中,您也可以运行 ruby project/test.rb,因为 Project 模块是在该文件中定义的。

如果您有多个文件定义 Project 模块,那也不是问题。它不会被重新定义,它总是同一个模块。

这两种方法都将定义Project 模块。但是,简单地执行 Project::Test 不会定义模块。

作为旁注,Rails 有一个自动加载器。如果您在 Rails 应用程序中,并使用特定的文件夹结构,这些中间模块将为您定义。但是,如果没有 Rails,您必须自己定义它们。

关于ruby - 在 ruby​​ 中包含模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1963937/

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