Rubyでブールパラメータを渡す
概要
Ruby スクリプトに false 値を渡すにはどうすればよいでしょうか。
私が呼び出した場合:
ruby myscript.rb false
そして、スクリプトで次のように言うとします。
my_class.new(*ARGV)
or my_class.new(ARGV[0])
基本的に、値「false」を持つ文字列が渡されます。はっきり言えば
if(ARGV[0]){ do something} .. this gets executed even if value passed is false.
パラメータをブール値に自動変換するように関数のシグネチャを変更できますか?そうする必要がありません
if(ARGV[0]=='true')
解決策
コマンドライン引数を評価する必要があります。コマンドラインで渡されるものはすべて文字列であり、コマンドラインが認識できるのはそれだけです。
たとえば、文字列にモンキーパッチを適用できます (未テスト)。
class String
def to_b
self =~ /^(true|t|yes|y|1)$/i
end
end
または、ユーティリティを作成するか、コマンドライン オプション パーサーを使用するか (長期的な最善策)、または…