Ruby 块
-
块
您已经了解了Ruby是如何定义方法的,可以在其中放置大量语句,然后调用该方法。同样,Ruby也具有块的概念。- 一个块由代码块组成。
- 您为块分配名称。
- 块中的代码始终括在大括号({})中。
- 始终使用与该块同名的函数调用该块。这意味着,如果您有一个名为test的块,则可以使用函数test来调用该块。
- 您可以使用yield语句调用一个块。
语法block_name { statement1 statement2 .......... }
在这里,您将学习使用简单的yield语句来调用一个块。您还将学习使用带有参数的yield语句来调用块。您将使用两种yield语句检查示例代码。 -
yield 代码块
让我们看一下yield语句的示例-
尝试一下def test puts "你在方法中" yield puts "您再次回到方法" yield end test {puts "你在块中"}
您还可以使用yield语句传递参数。这是一个例子-
尝试一下def test yield 5 puts "您正在方法test中" yield 100 end test {|i| puts "你在块 #{i} 中"}
在这里,yield语句被写在参数后面。您甚至可以传递多个参数。在该块中,将变量放置在两条垂直线(||)之间以接受参数。因此,在前面的代码中,yield 5语句将值5作为参数传递给测试块。现在,看下面的语句-test {|i| puts "你在块中 #{i}"}
在此,在变量i中接收值5 。现在,观察以下puts语句-puts "你在块中 #{i}"
该puts语句的输出为-你在块中 5
如果要传递多个参数,那么yield语句将变为-yield a, b
并且块是-test {|a, b| statement}
参数将以逗号分隔。 -
-
BEGIN和END块
每个Ruby源文件都可以声明要在文件加载时(BEGIN块)和程序完成执行后(END块)运行的代码块。
尝试一下BEGIN { # BEGIN block code puts "BEGIN code block" } END { # END block code puts "END code block" } # MAIN block code puts "MAIN code block"
一个程序可以包含多个BEGIN和END块。BEGIN块按遇到的顺序执行。END块以相反的顺序执行。