我感兴趣的是在属于同一模块的多个文件中定义多个类。模块CktCheck应该包含类Sdevv。这是代码:
module CktCheck
require 'Sdevv.rb'
end
在Sdevv.rb文件中,我有:
class Sdevv
...
...
end
我想通过使用这些行来实例化类Sdevv的实例
require("CktCheck.rb")
cktcheck_file = CktCheck::Sdevv.new("CktCheck.sdevv")
但是,引发了以下异常:
./isBeginDevLine.rb:6:in `<main>': uninitialized constant CktCheck::Sdevv (NameError)`
任何想法?
答案 0 :(得分:1)
您是否尝试过include
而不是require
?
此外,您可以在另一个文件中打开该模块以添加该类:
# In Sdevv.rb:
module CktCheck
class Sdevv
...
...
end
end
# Then, when you need it:
require("CktCheck")
require("Sdevv")
答案 1 :(得分:0)
我不认为拥有单独的模块文件是个好主意。 <模块'背后的理念是
每个类有1个文件并通过重新打开该模块在同一个模块中定义所有新类是很好的。
#In first_thing.rb
module SameThings
class FirstThing
....
end
end
#In second_thing.rb
module SameThings
class SecondThing
.....
end
end
now where ever you need to use FirstThing or SecondThing
require 'first_thing' or
require 'second_thing'
答案 2 :(得分:0)
在Sdevv.rb
内,您忘记在Sdevv
模块中定义类CktCheck
。因此,它定义在顶层。
您需要从顶层引用它而不是Sdevv
而不是CktCheck::Sdevv
,或者,如果您希望在CktCheck
模块中定义它,那么您,那么,必须在CktCheck
模块中定义它:
module CktCheck
class Sdevv
# …
end
end