> NARUSE様のご指摘を元に、()で括ってやったら動いてくれました。 > > @ary << (data || data) > ^^^^^^^^^^ これはただの @ary << data と同じですね。 ですから、data == nil の場合にも、@ary に nil が追加されることになります。 これって意図通りの動作ですか? そえじまさんの意図は、 「data != nil の場合、@ary に data を追加する。data == nil の場合はなにもしない」 のように思います。これが正しいとすると、意図通りのコードを素直に書くと、 if not data.nil? @ary << data end となります。1行にまとめるなら、 @ary << data unless data.nil? です。 もし、@ary == false になる可能性がないのならば (多くの場合この仮定は妥当)、 すでに NARUSE さんが示したように @ary << data if data が簡潔でいいと思います。 Ruby の場合、簡潔にするのに論理演算子を無理に使う必要はありません。 どうしても論理演算子を使いたいのならば、 data && @ary << data となりますが、文字数は同じですし、分かりにくいだけのように思います。 -- 吉永滋博 Shigehiro YOSHINAGA