私は中規模(非OO)のperlプログラムを移植してrubyを手に入れようとしています。私の個人的なイディオムの一つは、このようなオプションを設定するには、次のとおりです。コマンドラインオプションを使用するためのrubyイディオム
use Getopt::Std;
our $opt_v; # be verbose
getopts('v');
# and later ...
$opt_v && print "something interesting\n";
Perlでは、私は一種の私の歯をグリットとグローバル(効果)ことopt_v $をしましょう。 Rubyで
、多かれ少なかれ、完全に同等では、$ opt_verboseはクラスがアクセスできるようグローバルで
require 'optparse'
opts.on("-v", "--[no-]verbose", TrueClass, "Run verbosely") {
|$opt_verbose|
}
opts.parse!
end
だろう。クラスがグローバルフラグについて知っているように見えますが... ...間違っています。これを行うOO-idiomaticな方法は何ですか?
- メインルーチンはすべてのオプション関連のものを処理し、クラスで処理する方法を決定するだけでクラスを返すようにします。
- クラスにオプションの動作(例:冗長表示の方法など)を実装し、attr_writerなどのモードを設定するようにしましたか?
更新:optparseのを示唆答えをおかげで、私は、コマンドラインオプションとの関係、それは私が求めているコマンドラインオプションを処理する方法をないことを明確に、より多くされている必要があります理想的にはそのようなことから独立していなければならないグローバルなプログラムの状態とクラスを効果的に設定します。
です。注:ToddのURL構造はわずかに変更されているように見えますが、現在は存続しています[ここ](http://blog.toddwerth.com/entries/5)。 – lindes