Начинается. , , конец, а обозначить «блок»? - PullRequest
11 голосов
/ 13 марта 2009
temp = 98.3
begin
  print "Your temperature is " + temp.to_s + " Fahrenheit. "
  puts "I think you're okay."
  temp += 0.1
end while temp < 98.6

В приведенном выше примере все между началом и концом блока?

Я все еще не понимаю, что такое блок.

Если вы не можете назвать это блоком, как бы вы назвали этот кусок кода между началом и концом? Можно ли назвать это куском?

Ответы [ 2 ]

19 голосов
/ 13 марта 2009

Блок имеет особое значение в Ruby. Согласно Matz , создателю Ruby, вы можете рассматривать блок как безымянную функцию - обычно это то, что может быть yield введено, и которое также может принимать параметры.

При описании синтаксиса Ruby вы можете увидеть следующие двусмысленности:

  • begin ... end (то, что в других языках называется блоком) иногда можно просто назвать тем, чем оно является, то есть выражением (который, в свою очередь, может содержать другие выражения - выражение просто имеет возвращаемое значение) в Ruby. В некоторых источниках это все равно будет называться begin/end block или code block, что несколько усложнит путаницу
  • do ... end или {...} всегда будет называться блоком в Ruby

Например, просмотрите справочную страницу по синтаксису Ruby , например,

begin expression end
expression while expression
loop block

Подробнее см .:

9 голосов
/ 14 марта 2009

begin/end строго поток управления, а не блоки.

begin
  puts "hi"
end
# => "hi"

Код запускается немедленно. Если бы это был блок, его нужно было бы как-то вызвать, чтобы в нем выполнялся код, как в этом примере:

def a_method; end
a_method { puts "hi" }
# nothing..

def a_method
  yield
end

a_method { puts "Hi!" }
# => "Hi!"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...