允许 return 的块使用大括号
Allow braces for blocks that return
当我编写一个包含 return 值的多行代码块时,我喜欢使用大括号而不是 do
-end
以表明block 是为了 return 事情,而不是做事情。
Rubocop 的标准配置不允许这样做,rubocop -a
将任何多行块转换为 do
-end
块。
# 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 中是否有任何配置参数允许这种区分?
编辑:或者,至少,如果右括号后有一个点 (.),则可以避免更改括号块。
我发现有一个叫 Style/BlockDelimiters 的警察可以解决问题。配置为语义,它在功能块周围强制使用花括号并在命令代码周围执行..结束。
这是我添加到 .rubocop.yml
:
# Allow curly braces for functional blocks
BlockDelimiters:
EnforcedStyle: semantic
当我编写一个包含 return 值的多行代码块时,我喜欢使用大括号而不是 do
-end
以表明block 是为了 return 事情,而不是做事情。
Rubocop 的标准配置不允许这样做,rubocop -a
将任何多行块转换为 do
-end
块。
# 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 中是否有任何配置参数允许这种区分?
编辑:或者,至少,如果右括号后有一个点 (.),则可以避免更改括号块。
我发现有一个叫 Style/BlockDelimiters 的警察可以解决问题。配置为语义,它在功能块周围强制使用花括号并在命令代码周围执行..结束。
这是我添加到 .rubocop.yml
:
# Allow curly braces for functional blocks
BlockDelimiters:
EnforcedStyle: semantic