Ruby,对于单行块,首选 {...} 而不是 do...end。但是报错
Ruby, Prefer {...} over do...end for single-line blocks. But error
我在 .rb Class 文件中有此代码:
field :user, Types::UserType do resolve ->(_obj, _args, ctx) { ctx[:user] } end
我需要的是使用 {}
.
从单行中删除 do
和 end
[Style/BlockDelimiters] Prefer
{...}over
做...结束for single-line blocks.
但我不明白为什么会抛出这个错误:
[ruby] syntax error, unexpected '{', expecting '('
[ruby] syntax error, unexpected '}', expecting keyword_end
RuboCop 版本
$ rubocop -V
0.51.0 (using Parser 2.4.0.2, running on ruby 2.4.2 x64-mingw32)
为了安抚 Rubocop,切换到此:
field :user, Types::UserType do
resolve ->(_obj, _args, ctx) { ctx[:user] }
end
或者这样:
field(:user, Types::UserType) { resolve ->(_obj, _args, ctx) { ctx[:user] } }
我认为前者比后者干净得多,但这取决于您。
我在 .rb Class 文件中有此代码:
field :user, Types::UserType do resolve ->(_obj, _args, ctx) { ctx[:user] } end
我需要的是使用 {}
.
do
和 end
[Style/BlockDelimiters] Prefer
{...}over
做...结束for single-line blocks.
但我不明白为什么会抛出这个错误:
[ruby] syntax error, unexpected '{', expecting '('
[ruby] syntax error, unexpected '}', expecting keyword_end
RuboCop 版本
$ rubocop -V
0.51.0 (using Parser 2.4.0.2, running on ruby 2.4.2 x64-mingw32)
为了安抚 Rubocop,切换到此:
field :user, Types::UserType do
resolve ->(_obj, _args, ctx) { ctx[:user] }
end
或者这样:
field(:user, Types::UserType) { resolve ->(_obj, _args, ctx) { ctx[:user] } }
我认为前者比后者干净得多,但这取决于您。