Ruby 特罗洛普:否定标志不是假,而是零
根据,版本2.0中的布尔选项将导致为该选项指定值Ruby 特罗洛普:否定标志不是假,而是零,ruby,trollop,Ruby,Trollop,根据,版本2.0中的布尔选项将导致为该选项指定值true或false。该网站的一个例子: 例如: 使用--magic将导致:magic=>true,而--no magic将 结果是:magic=>false,不使用其中任何一种都将导致:magic =>正确 让我们来验证一下 jdibling@hurricane:~/dev/ruby/decoder$ cat hacks2.rb #!/usr/bin/env ruby require 'trollop' options = Trollop:
true
或false
。该网站的一个例子:
例如:
使用--magic
将导致:magic=>true
,而--no magic
将
结果是:magic=>false
,不使用其中任何一种都将导致:magic
=>正确
让我们来验证一下
jdibling@hurricane:~/dev/ruby/decoder$ cat hacks2.rb
#!/usr/bin/env ruby
require 'trollop'
options = Trollop::options do
banner "tester for trollop"
opt :magic, "Use magic", :default => true
end
puts "Args: #{ARGV}\nMagic: #{options.magic} (#{options.magic.class})"
jdibling@hurricane:~/dev/ruby/decoder$ ruby --version
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux]
jdibling@hurricane:~/dev/ruby/decoder$ gem list --local
*** LOCAL GEMS ***
gli (1.3.0)
trollop (2.0)
jdibling@hurricane:~/dev/ruby/decoder$ ./hacks2.rb
Args: []
Magic: true (TrueClass)
jdibling@hurricane:~/dev/ruby/decoder$ ./hacks2.rb --magic
Args: []
Magic: true (TrueClass)
jdibling@hurricane:~/dev/ruby/decoder$ ./hacks2.rb --no-magic
Args: []
Magic: (NilClass)
jdibling@hurricane:~/dev/ruby/decoder$
使用--no magic
不会导致:magic=>false
。我可以这样做:
options.magic = false if options.magic.nil?
但我不想。这将首先挫败使用特罗洛普的目的之一
是我做错了什么,还是trollop中的bug?我做错了
选项
这里是一个散列
。我正在访问它,就好像magic
是options
的成员一样
我应该做的是options[:magic]
,而不是options.magic
例如:
#!/usr/bin/env ruby
require 'trollop'
options = Trollop::options do
banner "tester for trollop"
opt :magic, "Use magic", :default => true
end
# options.magic = false if options.magic.nil?
puts "Args: #{ARGV}\nMagic: #{options[:magic]} (#{options[:magic].class}) nil? #{options[:magic].class.nil?}"
现在它工作正常了(或者说,我正在正确地使用它):
jdibling@hurricane:~/dev/ruby/decoder$ ./hacks2.rb --no-magic
Args: []
Magic: false (FalseClass) nil? false
jdibling@hurricane:~/dev/ruby/decoder$
我做错了
选项
这里是一个散列
。我正在访问它,就好像magic
是options
的成员一样
我应该做的是options[:magic]
,而不是options.magic
例如:
#!/usr/bin/env ruby
require 'trollop'
options = Trollop::options do
banner "tester for trollop"
opt :magic, "Use magic", :default => true
end
# options.magic = false if options.magic.nil?
puts "Args: #{ARGV}\nMagic: #{options[:magic]} (#{options[:magic].class}) nil? #{options[:magic].class.nil?}"
现在它工作正常了(或者说,我正在正确地使用它):
jdibling@hurricane:~/dev/ruby/decoder$ ./hacks2.rb --no-magic
Args: []
Magic: false (FalseClass) nil? false
jdibling@hurricane:~/dev/ruby/decoder$
我做错了
选项
这里是一个散列
。我正在访问它,就好像magic
是options
的成员一样
我应该做的是options[:magic]
,而不是options.magic
例如:
#!/usr/bin/env ruby
require 'trollop'
options = Trollop::options do
banner "tester for trollop"
opt :magic, "Use magic", :default => true
end
# options.magic = false if options.magic.nil?
puts "Args: #{ARGV}\nMagic: #{options[:magic]} (#{options[:magic].class}) nil? #{options[:magic].class.nil?}"
现在它工作正常了(或者说,我正在正确地使用它):
jdibling@hurricane:~/dev/ruby/decoder$ ./hacks2.rb --no-magic
Args: []
Magic: false (FalseClass) nil? false
jdibling@hurricane:~/dev/ruby/decoder$
我做错了
选项
这里是一个散列
。我正在访问它,就好像magic
是options
的成员一样
我应该做的是options[:magic]
,而不是options.magic
例如:
#!/usr/bin/env ruby
require 'trollop'
options = Trollop::options do
banner "tester for trollop"
opt :magic, "Use magic", :default => true
end
# options.magic = false if options.magic.nil?
puts "Args: #{ARGV}\nMagic: #{options[:magic]} (#{options[:magic].class}) nil? #{options[:magic].class.nil?}"
现在它工作正常了(或者说,我正在正确地使用它):
jdibling@hurricane:~/dev/ruby/decoder$ ./hacks2.rb --no-magic
Args: []
Magic: false (FalseClass) nil? false
jdibling@hurricane:~/dev/ruby/decoder$
Trollop似乎以散列形式返回选项。这似乎有效:
require 'trollop'
options = Trollop::options do
banner "tester for trollop"
opt :magic, "Use magic", :default => true
end
puts "Args: #{ARGV}\nMagic: #{options.magic} (#{options.magic.class})"
puts "Inspecting options: #{options.inspect}"
puts "#{options[:magic]}"
返回:
Args:
Magic: (NilClass)
Inspecting options: {:help=>false, :magic=>false, :magic_given=>true}
false
Trollop似乎以散列形式返回选项。这似乎有效:
require 'trollop'
options = Trollop::options do
banner "tester for trollop"
opt :magic, "Use magic", :default => true
end
puts "Args: #{ARGV}\nMagic: #{options.magic} (#{options.magic.class})"
puts "Inspecting options: #{options.inspect}"
puts "#{options[:magic]}"
返回:
Args:
Magic: (NilClass)
Inspecting options: {:help=>false, :magic=>false, :magic_given=>true}
false
Trollop似乎以散列形式返回选项。这似乎有效:
require 'trollop'
options = Trollop::options do
banner "tester for trollop"
opt :magic, "Use magic", :default => true
end
puts "Args: #{ARGV}\nMagic: #{options.magic} (#{options.magic.class})"
puts "Inspecting options: #{options.inspect}"
puts "#{options[:magic]}"
返回:
Args:
Magic: (NilClass)
Inspecting options: {:help=>false, :magic=>false, :magic_given=>true}
false
Trollop似乎以散列形式返回选项。这似乎有效:
require 'trollop'
options = Trollop::options do
banner "tester for trollop"
opt :magic, "Use magic", :default => true
end
puts "Args: #{ARGV}\nMagic: #{options.magic} (#{options.magic.class})"
puts "Inspecting options: #{options.inspect}"
puts "#{options[:magic]}"
返回:
Args:
Magic: (NilClass)
Inspecting options: {:help=>false, :magic=>false, :magic_given=>true}
false
如果你像Trollop文档中显示的那样,而不是像Trollop文档中显示的那样使用选项[:magic],这会有区别吗?magic?@Chuck:是的,我做错了,我只是独立地解决了这个问题。回答……如果你像Trollop文档中显示的那样,而不是像Trollop文档中显示的那样,使用
选项[:magic]
,这会有什么不同吗?magic?@Chuck:是的,我做错了,我刚刚独立地解决了这个问题。回答……如果你像Trollop文档中显示的那样,而不是像Trollop文档中显示的那样,使用选项[:magic]
,这会有什么不同吗?magic?@Chuck:是的,我做错了,我刚刚独立地解决了这个问题。回答……如果你像Trollop文档中显示的那样,而不是像Trollop文档中显示的那样,使用选项[:magic]
,这会有什么不同吗?magic?@Chuck:是的,我做错了,我刚刚独立地解决了这个问题。回答…下游护理需要详细说明?下游护理需要详细说明?下游护理需要详细说明?下游护理需要详细说明?