Latest web development tutorials

Rubin-Block

Sie wissen bereits, wie man ein Ruby-Methode zu definieren und wie Sie die Methode aufrufen. Ebenso hat Rubin das Konzept eines Blocks.

  • Block besteht aus einer Menge Code zusammengesetzt.
  • Sie benötigen einen Blocknamen zu nehmen.
  • Block-Code wird in geschweiften Klammern immer eingeschlossen {} innen.
  • Von denen blockieren sie immer den Funktionsaufruf des gleichen Namens. Dies bedeutet , dass , wenn Ihr Blockname für denTest,dann wollen Sie diese FunktionTestblockzu verwenden , zu rufen.
  • Sie können dieyield- Anweisung verwenden , um den Block zu nennen.

Grammatik

block_name{
   statement1
   statement2
   ..........
}

Hier erfahren Sie , wie Sie eine einfacheyield- Anweisung zu verwenden , um den Block zu nennen. Sie werden auch lernen , wie man dieyield- Anweisung mit Parametern an den aufgerufenen Baustein zu verwenden. Im Beispiel gibt es zwei Arten vonErtrag- Anweisung.

yield- Anweisung

Lassen Sie uns ein Beispiel yield-Anweisung aussehen:

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

def test
   puts "在 test 方法内"
   yield
   puts "你又回到了 test 方法内"
   yield
end
test {puts "你在块内"}

Beispiele für die obigen operativen Ergebnisse wie folgt:

在 test 方法内
你在块内
你又回到了 test 方法内
你在块内

Sie können auch yield-Anweisung mit Parameter übergeben. Hier ist ein Beispiel:

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

def test
   yield 5
   puts "在 test 方法内"
   yield 100
end
test {|i| puts "你在块 #{i} 内"}

Beispiele für die obigen operativen Ergebnisse wie folgt:

你在块 5 内
在 test 方法内
你在块 100 内

Hierbei wird nach deryield- Anweisung gefolgt Parameter. Sie können sogar mehrere Parameter übergeben. In dem Block, können Sie eine Variable zwischen zwei vertikalen Balken platzieren, um die Parameter zu akzeptieren. So wird in dem obigen Code, Ausbeute 5-Anweisung wird als Parameter auf den Wert von 5 Teststücke bestanden.

Nun, sehen Sie die folgende Erklärung ab:

test {|i| puts "你在块 #{i} 内"}

Hier wird der Wert von 5 die Variable i zu erhalten. Jetzt setzen wir die folgende Aussage zu beachten:

puts "你在块 #{i} 内"

Dies stellt die Ausgabe-Anweisung lautet:

你在块 5 内

Wenn Sie mehrere Parameter übergeben wollen, dann ist dieAusbeuteAussage wie folgt:

yield a, b

Zu diesem Zeitpunkt, wie in dem Block gezeigt:

test {|a, b| statement}

Parameter durch Komma getrennt.

Blöcke und Methoden

Sie haben zwischen dem Block und dem Verfahren, wie miteinander in Beziehung gesehen. Sie verwenden in der Regel die yield-Anweisung den Block aus der Methode ruft den gleichen Namen haben. Daher ist der Code wie folgt:

#!/usr/bin/ruby

def test
  yield
end
test{ puts "Hello world"}

Dieses Beispiel ist der einfachste Weg, um den Block zu erzielen. Sie verwenden dieyield- Anweisung den Testblock aufruft.

Aber wenn der letzte Parameter vor dem Verfahren mit & dann können Sie das Verfahren einen Block übergeben wird, und dieser Block kann mit dem letzten Parameter zugeordnet werden. Wenn die * und & erscheinen auch in der Parameterliste und sollte auf der Rückseite platziert werden.

#!/usr/bin/ruby

def test(&block)
   block.call
end
test { puts "Hello World!"}

Beispiele für die obigen operativen Ergebnisse wie folgt:

Hello World!

BEGIN und END-Blöcke

Jede Datei kann Ruby-Quellcode deklarieren, wenn Codeblöcke (BEGIN-Block), wenn die Datei ausgeführt wird, geladen, und nach dem Programm beendet Codeblöcke Ausführung zu laufen (END-Block).

#!/usr/bin/ruby

BEGIN { 
  # BEGIN 代码块
  puts "BEGIN 代码块"
} 

END { 
  # END 代码块
  puts "END 代码块"
}
  # MAIN 代码块
puts "MAIN 代码块"

Ein Programm kann mehrere BEGIN und END-Blöcke enthalten. BEGIN-Block wird in der Reihenfolge ausgeführt, in der sie erscheinen. END Blöcke, wie sie erscheinen in umgekehrter Reihenfolge. Bei der Ausführung erzeugt die obige Programm die folgenden Ergebnisse:

BEGIN 代码块
MAIN 代码块
END 代码块