Ruby,对于单行块,更喜欢{…}而不是do…end。但是错误
我在.rb类文件中有以下代码:Ruby,对于单行块,更喜欢{…}而不是do…end。但是错误,ruby,lint,rubocop,Ruby,Lint,Rubocop,我在.rb类文件中有以下代码: field:user,Types::UserType do resolve->(_obj,_args,ctx){ctx[:user]}end 我需要的是使用{}从单行中删除do和end [Style/BlockDelimiters]对于单行块更喜欢{…}而不是do…end。 但我不明白为什么它会抛出这个错误: [ruby] syntax error, unexpected '{', expecting '(' [ruby] syntax error, unexpe
field:user,Types::UserType do resolve->(_obj,_args,ctx){ctx[:user]}end
我需要的是使用{}
从单行中删除do
和end
[Style/BlockDelimiters]对于单行块更喜欢
{…}而不是
do…end。
但我不明白为什么它会抛出这个错误:
[ruby] syntax error, unexpected '{', expecting '('
[ruby] syntax error, unexpected '}', expecting keyword_end
RuboCop版本
要安抚Rubocop,请切换到以下任一选项:
field :user, Types::UserType do
resolve ->(_obj, _args, ctx) { ctx[:user] }
end
或者这个:
field(:user, Types::UserType) { resolve ->(_obj, _args, ctx) { ctx[:user] } }
我认为前者要比后者干净得多,但这取决于你。为了安抚Rubocop,请切换到以下任一选项:
field :user, Types::UserType do
resolve ->(_obj, _args, ctx) { ctx[:user] }
end
或者这个:
field(:user, Types::UserType) { resolve ->(_obj, _args, ctx) { ctx[:user] } }
我认为前者要比后者干净得多,但这取决于你。“我需要的是删除”-你不需要一开始就盲目地遵循rubocop所说的一切。如果您仍然希望满足它,请正确管理运算符优先级,可能在
Types::UserType
@mudasobwa周围加上括号。我认为它应该围绕整个参数列表,例如字段(:user,Types::UserType)做#etc
,也就是说它读起来最好是两行或者使用更自然的内联块语法。字段(:user,Types::UserType){resolve->(_obj,_args,ctx){ctx[:user]}
@engineersmnky,什么是更自然的内联块语法
?参见@gabrielhilal注释。使用大括号{…}
表示内联块更自然(阅读惯用语)。内部解析器不允许使用do…end
作为内联块,只是通常认为它不是合适的样式“我需要的是删除”-您不需要一开始就盲目地遵循rubocop所说的一切。如果您仍然希望满足它,请正确管理运算符优先级,可能在Types::UserType
@mudasobwa周围加上括号。我认为它应该围绕整个参数列表,例如字段(:user,Types::UserType)做#etc
,也就是说它读起来最好是两行或者使用更自然的内联块语法。字段(:user,Types::UserType){resolve->(_obj,_args,ctx){ctx[:user]}
@engineersmnky,什么是更自然的内联块语法
?参见@gabrielhilal注释。使用大括号{…}
表示内联块更自然(阅读惯用语)。内部解析器不允许将do…end
用作内联块,只是一般认为它不合适style@engineersmnky那么我站对了。我想知道他们什么时候修好的。大概是1.9。@engineersmnky相同。也许我把这和语法上的其他怪癖混淆了。我已经更新了答案。后者在2.4上无效。这可能是因为那里的绑定不明确,不清楚该块是否提供给Types::UserType
或字段
。我已经用有效的语法对其进行了更新。@engineersmnky我站得对。我想知道他们什么时候修好的。大概是1.9。@engineersmnky相同。也许我把这和语法上的其他怪癖混淆了。我已经更新了答案。后者在2.4上无效。这可能是因为那里的绑定不明确,不清楚该块是否提供给Types::UserType
或字段
。我已经用有效的语法更新了它。