Kein Zugriff auf trollop :: Optionen Hash Schlüssel?
-
25-09-2019 - |
Frage
Ich versuche, die Befehlszeile mit der Ruby-Bibliothek Trollop zu analysieren.
#!/usr/bin/ruby
require 'net/http'
require 'trollop'
opts = Trollop::options do
opt :src, "src lang", :short => 'i', :type => String
opt :dest, "dest lang", :short => 'o', :type => String
end
opts.each do |key,val|
puts "#{key}: #{val}"
end
print opts["src"]
print opts["dest"]
Dies ist die Ausgabe:
$ ./translate.rb --src he --dest th
dest_given: true
src: he
dest: th
help: false
src_given: true
nilnil
Wenn Sie mit opts.each
den Hash-Druck aus, kann ich sehen, gibt es Tasten genannt src
und dest
, und ihre Werte sind das, was ich erwarte. Doch warum Zugriff auf die Hash-Werte mit opts["src"]
return null?
Lösung
zetetic korrekt ist, ist der Schlüssel zu einem Symbol.
Und in der Tat Enumerable#each
tat ein Symbol zu dem Block ergeben, aber wenn es über #{...}
Druck Ruby ruft to_s
, die für Symbol definiert und es gibt die Klarnamen.
Sie können sagen, dass Ruby to_s
für String-Interpolation mit einem Einzeiler Test genannt wird:
>> "ok, #{class A; def to_s; "what fun"; end; self; end.new}, done"
=> "ok, what fun, done"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow