Ruby 教程 目录

Ruby 块(Block)

在 Ruby 中,块(block)是一种特殊的代码结构,它允许将一段代码传递给方法调用。块可以看作是匿名函数,可以在方法调用时动态地执行。通过使用块,我们可以使代码更加简洁和灵活。

块的基本概念

块是由关键字 doend 或者大括号 {} 包围的代码段。例如:

上述代码会输出:

这里,each 方法接受一个块作为参数,并对数组中的每个元素执行该块中的代码。

块参数

块可以接收参数。这些参数在定义块时指定,并且在执行块时传递给它。例如:

在这个例子中,num 是块的参数,每次循环时都会被赋值为数组中的下一个元素。

块的隐式返回值

块可以像普通方法一样返回值。如果块的最后一行没有显式地使用 return 关键字,那么块的返回值将是最后一行表达式的值。例如:

在这里,map 方法将每个元素乘以 2,并返回一个新的数组。这个新数组的值就是块的返回值。

块与方法

方法可以通过参数接收块,并通过 yield 关键字来调用它。例如:

-- -------------------- ---- -------
--- ------------------
  ---- ------
  -----
  ---- ------
---

------------------ --
  ---- ---------
---

上述代码将输出:

这里,yield 关键字用来调用传递给方法的块。

块的多重调用

一个块可以被多次调用。例如:

-- -------------------- ---- -------
--- -------------------
  ----------- --
    -----
  ---
---

--------------- --
  ---- ---- --------------------------- ----
---

上述代码将输出:

这里,times.times 方法用于重复执行块指定的次数。

块与 Proc 和 Lambda

Ruby 中还有两种专门用于存储代码块的对象:Proc 和 Lambda。它们都可以通过 Proc.new 或者 lambda 关键字创建。例如:

Lambda 更类似于普通的方法,它有一个隐式的返回语句,而且在参数数量不匹配时会抛出异常。例如:

而如果参数数量不匹配:

块的灵活性

块提供了一种非常灵活的方式来处理代码的执行顺序和逻辑。通过将代码封装成块并传递给方法,我们可以极大地提高代码的可重用性和可维护性。

结论

本章介绍了 Ruby 中块的基本概念、参数、隐式返回值、与方法的关系、多重调用以及与 Proc 和 Lambda 的区别。理解这些基础知识对于深入学习 Ruby 编程至关重要。掌握了这些概念后,你就可以在实际项目中更有效地利用块来编写简洁、灵活的代码。

上一篇: Ruby 关键字参数
下一篇: Ruby Proc对象
纠错
反馈