web-dev-qa-db-ja.com

「(...)グループ化された式として解釈される」とはどういう意味ですか?

Ruby linter in Atomを使用していますが、一部の行では次の警告が表示されます。

(...) interpreted as grouped expression

この警告を受け取る行の例は次のとおりです。

elsif not (params[:vacancy].nil? or params[:vacancy]['company_id'].nil? or params[:vacancy]['company_id'] == "0" )

警告を消すために、その行をどのように改善する必要がありますか?

17
Jasper Kennis

警告は

(...) interpreted as grouped expression

そしてそれはまさにそれが言うことを意味します:Rubyでは、括弧は式のグループ化、パラメータリスト、引数リストの3つの目的に使用できます。この警告は、Rubyが引数リストが必要だと考えているが、代わりにグループ化された式を書き込んだ場合に発行されます。最も一般的な原因は、メッセージの名前とメッセージ送信の引数リストの間の空白です。この:

foo.bar (1, 2)

これは、notメッセージ送信の引数リストとして解釈されますが、グループ化された式であり、この特定の場合はSyntaxErrorです。

あなたの特定のケースでは、警告は誤検知のようです。

15
Jörg W Mittag

notと括弧の間のスペースを削除してみてください

5
Mourad

私が受け取る警告は、MRI Ruby自体(オプション-wc)、そして私はあなたがそこにタイプミスを持っていると思います。私が受け取るメッセージには、「接地」という言葉はありませんが、「グループ化」されています。

Rubyの括弧は、式をグループ化するため、または関数またはメソッドの引数リストをマークするために、2つの目的のいずれかに使用できます。

そのエラーメッセージが言っているのは、これら2つのオプションのうち、Rubyは式のように扱っているということです。Rubyで定義できることに注意してください。 「not」と呼ばれるメソッド。

そして、この特定のケースでは、Rubyが括弧をどのように解釈するかは問題ではありません。

メッセージを取り除く1つの方法は、「not(」の間のスペースを削除することです。これが厄介だと思うなら、私はあなたに同意します。

0
rocky