2009-03-13 12 views
10
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 

W powyższym przykładzie wszystko pomiędzy początkiem i końcem bloku?Rozpoczyna się. . . koniec, gdy oznacza "blok"?

Wciąż jestem zdezorientowany, co to jest blok.

Jeśli nie możesz nazwać tego blokiem, jak nazwałbyś ten fragment kodu między początkiem a końcem? Czy można to nazwać kawałkiem?

Odpowiedz

19

Blok ma specjalne znaczenie w języku Ruby. According to Matz, twórca Rubiego, możesz spojrzeć na blok jako bezimienną funkcję - zazwyczaj coś, co może być edytowane, i które może również przyjmować parametry.

może pojawić się następujący rodzaj disamiguation opisując Ruby składni:

  • begin ... end (co nazywa się blok w innych językach) może być czasami nazywany po prostu to, co jest, tj. expression (który może z kolei zawierać inne wyrażenia - wyrażenie jest po prostu czymś, co ma wartość zwracaną) w Ruby. Niektóre odniesienia będzie nadal nazywają to begin/end block, lub code block, dodając nieco do zamieszania
  • do ... end lub {...} będzie zawsze określany jako block w Ruby

Przykłady przestudiuj the Ruby syntax man page np

beginexpressionend
expressionwhileexpression
loopblock

Dalsze czytania, patrz

8

begin/end są ściśle kontrolować przepływ, a nie bloków.

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

Kod działa natychmiast. Jeśli był to blok, musiałby zostać wywołany, aby kod w nim działał, jak w tym przykładzie:

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

def a_method 
    yield 
end 

a_method { puts "Hi!" } 
# => "Hi!" 
Powiązane problemy