Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决rubocop中的ruby格式错误?_Ruby_Formatting_Rubocop - Fatal编程技术网

如何解决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