首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法访问按键散列的trollop::options?

无法访问按键散列的trollop::options?
EN

Stack Overflow用户
提问于 2011-01-06 03:35:13
回答 1查看 408关注 0票数 0

我正在尝试用ruby库Trollop解析命令行。

代码语言:javascript
复制
#!/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"]

这是输出:

代码语言:javascript
复制
$ ./translate.rb --src he --dest th  
dest_given: true
src: he
dest: th
help: false
src_given: true
nilnil

在使用opts.each打印散列时,我可以看到有名为srcdest的键,它们的值是我所期望的。然而,为什么用opts["src"]访问散列值会返回null呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-06 04:26:38

zetetic是正确的,钥匙是一个符号。

事实上,Enumerable#each确实为您的块生成了一个符号,但是当通过#{...}打印它时,Ruby会调用to_s,这是为symbol定义的,它返回普通名称。

通过单线性测试可以看出,Ruby被称为to_s,用于字符串插值:

代码语言:javascript
复制
>> "ok, #{class A; def to_s; "what fun"; end; self; end.new}, done"
=> "ok, what fun, done"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4608411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档