参见英文答案 >
Hash syntax in Ruby 1个
我有一个配方,其中包含以下代码,即lint测试失败:
我有一个配方,其中包含以下代码,即lint测试失败:
service 'apache' do supports :status => true,:restart => true,:reload => true end
它失败并出现错误:
Use the new Ruby 1.9 hash Syntax. supports :status => true,:reload => true
不确定新语法是什么样的……有人可以帮忙吗?
解决方法
在Ruby版本1.9中引入了一种新的哈希文字语法,其键是符号.哈希使用“哈希火箭”运算符来分隔键和值:
a_hash = { :a_key => 'a_value' }
在Ruby 1.9中,这种语法是有效的,但只要键是符号,它也可以写成:
a_hash = { a_key: 'a_value' }
正如Ruby样式指南所说,当您的哈希键是符号(see)时,您应该更喜欢使用Ruby 1.9哈希文字语法:
# bad hash = { :one => 1,:two => 2,:three => 3 } # good hash = { one: 1,two: 2,three: 3 }
并且作为一个额外的提示:不要将Ruby 1.9哈希语法与哈希火箭混合在同一个哈希文字中.如果你的键符号不符合哈希火箭的语法(see):
# bad { a: 1,'b' => 2 } # good { :a => 1,'b' => 2 }
所以你可以尝试:
service 'apache' do supports status: true,restart: true,reload: true end
如果你想看看Rubocop“方式”是什么,你可以在命令行中运行它,这将只为HashSyntax警告或标志自动更正你的代码:
rubocop --only HashSyntax --auto-correct
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。