以下の比較的単純な割り当てで興味深い問題が発生しています。最初に括弧で囲まれた各チャンクはnilと評価され、割り当てられるべきRubygame::Surface.new
値として残されます。@image
残念ながら、私が設定した次の行では、がnilであるため、 NoMethodError@rect
がスローされます。@image
@image = (image unless image.nil?) or
(Rubygame::Surface.autoload(image_file) unless image_file.nil?) or
(Rubygame::Surface.autoload("#{@name}.png") unless @name.nil?) or
Rubygame::Surface.new([16, 16])
@rect = Rubygame::Rect.new [0, 0], [@image.width, @image.height]
同様のテストがIRBで期待どおりに機能するため、「または」ステートメントは整形式であると確信していますが、他のすべてがnilのときに新しいSurfaceが返されない理由がわかりません。