Ruby,首选{...} over ...结束单行块。但错误

时间:2017-12-28 18:03:01

标签: ruby lint rubocop

我在.rb类文件中有这段代码:

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)

1 个答案:

答案 0 :(得分:2)

要安抚Rubocop,请切换到:

field :user, Types::UserType do
  resolve ->(_obj, _args, ctx) { ctx[:user] }
end

或者这个:

field(:user, Types::UserType) { resolve ->(_obj, _args, ctx) { ctx[:user] } }

我认为前者比后者更清洁,但它取决于你。