Ruby 中如何将块传递给方法?

· 约 2 分钟读完 · 第 62 / 199 章

推荐答案

在 Ruby 中,可以通过 yield 关键字或显式使用 &block 参数将块传递给方法。以下是两种常见的方式:

使用 yield 关键字

使用 &block 参数

本题详细解读

1. 使用 yield 关键字

  • yield 是 Ruby 中用于执行传递给方法的块的关键字。
  • block_given? 是一个内置方法,用于检查当前方法是否接收到了一个块。
  • 这种方式简洁明了,适合在方法中直接执行块的情况。

2. 使用 &block 参数

  • &block 是将块显式转换为 Proc 对象的方式。
  • block.call 用于调用这个 Proc 对象。
  • 这种方式更加灵活,允许你将块作为参数传递给其他方法,或者存储起来稍后使用。

3. 块与 Proc 的区别

  • 块是 Ruby 中的一种语法结构,不能直接作为对象传递。
  • Proc 是块的对象表示形式,可以通过 & 符号将块转换为 Proc 对象。

4. 何时使用哪种方式

  • 如果你只需要在方法中执行块,使用 yield 更为简洁。
  • 如果你需要将块作为参数传递给其他方法,或者需要存储块以便稍后使用,使用 &block 更为合适。