質問
ようにしているお迎えにrubyの移植による中規模(非OO)perlプログラム。私個人とイディオムは、設定オプションのようになります:
use Getopt::Std;
our $opt_v; # be verbose
getopts('v');
# and later ...
$opt_v && print "something interesting\n";
Perlでは、そういうの磨とし、$opt_v(有効)。
Rubyには正に相当する
require 'optparse'
opts.on("-v", "--[no-]verbose", TrueClass, "Run verbosely") {
|$opt_verbose|
}
opts.parse!
end
ここで,$opt_verboseはグローバルに留意のうえ、登校、就業できます。この授業を知ってグローバル旗のようにそうな...er...間違っています。何OO-慣用いということが?
- の主なルーチンのすべてのオプション-関連するものとして、授業だけで返事がすことを決定するものをいう。かりますので注意が必要です。
- 授業の実施オプション行動(例えば、ノウハウをデフォルト値が設定され設定モードによattr_writerうこんなことをしたのだろう。
更新: の答えを示唆する指摘をお寄せになってより明確にしたことのある どのよう 処理のコマンドラインオプションが私はいつもよりの関係のコマンドラインオプションを有効に設定し、グローバルプログラム状態およびクラスを想されることはそういうことも得意なんですね。
解決
がいし このブログ (Todd Werth)を発表したより長時間のスケルトンのコマンドライスクリプトをRubyなどがある。彼の骨格を用ハイブリッドアプローチにより、アプリケーションコードカプセル化され、アプリケーションのクラスがインスタンスが生成され、その実施を呼び出すことによってファイル名を指定して実行方法のオブジェクトです。このオプションに格納するクラスの広いインスタンス変数とすべてのメソッドは、アプリケーションオブジェクトにアクセスできなく触れていないためその他のオブジェクトが使用されます。
い傾向にこの手法を用のオプションに含まれたオブジェクトは、いずれかを使用attr_writersまたはオプションパラメータをメソッドの呼び出しに渡る関連オプションの追加的なオブジェクト。このように、任意のコードに含まれる外部の授業でさらに向上することとなるのオプション自体--心配がなく、名前の変数の主なルーチン内から thingy
クラスの場合はオプション設定、 thingy.verbose=true
attr_writerや thingy.process(true)
ます。
他のヒント
の optparseは 図書館は標準配布がありますので,そこでしっかりしており、ビジネスはもちろん必要なく第三者ます。
しんので個人的にも レールが使用で幅広く や なrspec, は、思いもかわいらしい固体に対する信任投票
この例では、レール' script/console
が見てとれるのではないので、使い方を写容易にア
の 最初のヒット googleのために"処理コマンドラインオプションルビー"との記 Trollop であるかのような良いツール。