Пример блоков Ruby не работает должным образом - PullRequest
3 голосов
/ 29 июня 2011

Я только начал изучать рубиновое чтение с разных ресурсов. Один из них - rubylearning.com, и я просто читал раздел блоки и выполнял упражнения. По некоторым причинам область действия этого примера работает по-другому в моем случае:

x = 10  
5.times do |x|  
  puts "x inside the block: #{x}"  
end  

puts "x outside the block: #{x}"  

Вывод должен быть (по данным сайта):

x inside the block: 0  
x inside the block: 1  
x inside the block: 2  
x inside the block: 3  
x inside the block: 4  
x outside the block: 10  

Но мой вывод:

x inside the block: 0
x inside the block: 1
x inside the block: 2
x inside the block: 3
x inside the block: 4
x outside the block: 4

Есть идеи, почему? Предполагается, что этот раздел посвящен области действия в рубиновых блоках, но я сейчас совершенно сбит с толку ...

EDIT:

Хорошо, я только что кое-что понял: я выполнял свой код из textmate. Если я запускаю его из командной строки, я получаю ожидаемый результат плюс 1.9.2 RUBY_VERSION. Но я получаю 1.8.7 с Textmate. У textmate установлена ​​собственная версия ruby ​​или как? - 0al0 0 сек. Назад edit

Ответы [ 2 ]

5 голосов
/ 29 июня 2011

Ваш пример работает начиная с ruby ​​1.9.1, как объясняет статья:

В Ruby 1.9.1 блоки вводят свои собственная область видимости для параметров блока только.

Итак, вы работаете с другой версией ruby, попробуйте это:

ruby -v

Я рекомендую установить rvm для управления различными версиями ruby.

4 голосов
/ 29 июня 2011

Вы используете устаревшую версию Ruby.Область видимости локальных переменных блоков изменилась в Ruby 1.9.0 +.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...