1

同じモジュールに属する複数のファイルにわたって複数のクラスを定義することに興味があります。モジュール 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)`

何か案は?

4

3 に答える 3

1

include代わりに試しましたrequireか?

また、他のファイルでモジュールを開いて、クラスを追加することもできます。

# In Sdevv.rb:

module CktCheck
  class Sdevv
  ...
  ...
  end
end

# Then, when you need it:
require("CktCheck")
require("Sdevv")
于 2013-02-18T10:17:28.693 に答える
0

個別のモジュール ファイルを用意するのは良い考えではないと思います。「モジュール」の背後にあるアイデアは、

  1. それらを同じ「名前空間」(つまりモジュール名)に保持することにより、同じ種類の類似のものをグループ化します
  2. 使用した「名前」がたまたま他の名前空間(他のモジュール)で使用されている場合の名前の衝突を回避します。

クラスごとに 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'   
于 2013-02-18T11:32:23.037 に答える