如何解决rubocop中的ruby格式错误?
错误-如何解决rubocop中的ruby格式错误?,ruby,formatting,rubocop,Ruby,Formatting,Rubocop,错误- Inspecting 1 file C Offenses: hellotk.rb:7:17: C: Do not use semicolons to terminate expressions. pack { padx 15; pady 15; side 'left'; } ^ 1 file inspected, 1 offense detected 档案- #!/usr/bin/ruby require 'tk' root = TkRoot
Inspecting 1 file
C
Offenses:
hellotk.rb:7:17: C: Do not use semicolons to terminate expressions.
pack { padx 15; pady 15; side 'left'; }
^
1 file inspected, 1 offense detected
档案-
#!/usr/bin/ruby
require 'tk'
root = TkRoot.new { title 'Hello, World!' }
TkLabel.new(root) do
text 'Hello, World!'
pack { padx 15; pady 15; side 'left'; }
end
TkButton.new do
text 'Quit'
command 'exit'
pack('fill' => 'x')
end
Tk.mainloop
删除“;”的适当格式是什么所以rubocop停止警告我写错了文件?我希望以正确的方式消除这种冒犯。它希望您将表达式放在新行上,而不是用分号分隔
pack {
padx 15
pady 15
side left
}
或
试过运行“rubocop-a”?@Mircea是的。它不会自动更正此问题。这两种选择之间是否存在任何性能或可读性差异?一个比另一个“更标准”吗?Rubocop回答了我的问题。一旦我把它放在多行上,它就自动为我把它改成了第二个选项。@Aaron两者都是有效的(就像用分号分隔语句一样),但Rubocop为Ruby代码提供了一种普遍接受的“风格”,多行块最好以
do
和end
开头,当像10.times{put'foo'}
这样的单行块表达式时,最好使用大括号,因为它看起来像10.times do put'foo'end
@Aaron一样有趣,尽管多行do..end
和单行{…}
很常见,但区别是优先的。这可能会对代码产生影响。有些人会使用这种样式来表示副作用,而不是无副作用的代码。还有@vgoff谢谢,这些链接帮助我更好地理解了卷发与do的问题。
pack do
padx 15
pady 15
side left
end