Почему begin / rescue / else ведет себя по-разному на 1.9.2 и 1.8.7 - PullRequest
2 голосов
/ 24 июня 2011

Я работаю по методу mm.В ruby ​​1.9.2 он ведет себя странно, вместо ожидаемого результата 1.9.2=>10 Я получаю

ELSE **
1.9.2=>8

Есть идеи о том, что происходит?

class A

 def mm(data)
   begin
     send_len = data
     return send_len
   rescue Exception
     STDOUT.write("Rescue *#{$!}*\n")
   else
     STDOUT.write("ELSE *#{$!}*\n")
   end
 end

end # class A

a = A.new
print "#{RUBY_VERSION}=>#{a.mm(10)}\n"

С 1.8.7 я получаю ожидаемый результат:

1.8.7=>10

1 Ответ

3 голосов
/ 24 июня 2011

Это открытая ошибка в Ruby .Тем не менее, ведется дискуссия о том, должен ли он вести себя так же, как в 1.8 или как в 1.9.

Матц, автор Ruby, считает, что он должен вести себя как в 1.8 .

...