私はCsvVerifyモジュールがどのように動作するかをスケッチしています。モジュールでインスタンス変数を使用しないようにするにはどうすればよいですか?
employee_csv_importer.rb(モジュールを使用して)
class EmployeeCsvImporter
include CsvVerify
headers 'ID', 'First Name', 'Last Name', 'Title or Department',
'Age', 'Native Language', 'Fluent in English?'
end
:アイデアはvirtusに触発されてこのような何かを移行する
インスタンス変数を持つモジュールが含まれますクラスをpoluteないようにする方法はありますcsv_verify.rb
module CsvVerify
puts "included"
def headers(*names)
@config = Config.new
end
end
config.rb
module CsvVerify
class Config
end
end
したがって、@configを使用してEmployeeCsvImporterを汚染しないように、これを再編成するにはどうすればよいですか?
PS。 これはまだ動作しません。
なぜこの出力にemployee_csv_importer.rbが実行されますか?
included
/data/gems/csv_verify/examples/1_employees.rb:6:in `<class:EmployeeCsvImporter>':
undefined method `headers' for EmployeeCsvImporter:Class (NoMethodError)
def self.headersも機能しません。ですから、CsvVerifyをクラスにして、EmployeeCsvImporterに継承させることをお勧めしますか?また、私はルビーには新しいものではなく、モジュールを書くことに就いています。決して他の言語でも同様の概念が見つからず、いつかそれをマスターする必要があります。 –
あなたのクラスを '' 'header''メソッドを提供するモジュールで__extend__する必要があります。 まずクラスの全機能を書き出し、モジュールで分割する方法と必要性を決めておくことをお勧めします。 。 –
ok拡張機能はありがたいですが、これは@configがクラス変数であることを意味していますか? –