当我编写一个返回值的多行 block 时,我喜欢使用大括号而不是 do
-end
,以便清楚地表明block 是返回事物,而不是做事物。
Rubocop 的标准配置不允许这样做,而 rubocop -a
会转换 do
-end
中的任何多行 block block 。
# I like but Rubocop hates.
expect {
delete :destroy, id: thing.to_param
}.to change(Thing, :count).by(-1)
# I don't like but Rubocop does.
expect do
delete :destroy, id: thing.to_param
end.to change(Thing, :count).by(-1)
# That, we both like.
before do
stub_api_calls
admin_sign_in create(:super_admin)
end
Rubocop 中是否有任何配置参数可以实现这种区别?
编辑:或者,至少,如果右括号后面有一个点 (.),可以避免更改括号 block 。
最佳答案
我发现有一个警察,名叫 Style/BlockDelimiters这样就可以了。配置为语义,它在功能 block 周围强制使用大括号,并在命令性代码周围强制执行 do..end。
这是我添加到 .rubocop.yml
中的内容:
# Allow curly braces for functional blocks
BlockDelimiters:
EnforcedStyle: semantic
关于ruby - 允许返回的 block 使用大括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34506691/