Начинается ли. . . end while обозначают «блок»?

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

В приведенном выше примере все, что находится между begin и end, является блоком?

Я до сих пор не понимаю, что такое блок.

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


person Community    schedule 13.03.2009    source источник


Ответы (2)


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

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

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

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

begin expression end
expression while expression
loop block

Для дальнейшего чтения см.:

person vladr    schedule 13.03.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!"
person August Lilleaas    schedule 13.03.2009