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

我需要的是使用 {}.

从单行中删除 doend

[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] } }

我认为前者比后者干净得多,但这取决于您。