📜  Ruby 中的 yield 关键字

📅  最后修改于: 2022-05-13 01:54:59.601000             🧑  作者: Mango

Ruby 中的 yield 关键字

我们可以向我们的方法发送一个块,它可以多次调用该块。这可以通过发送 proc/lambda 来完成,但使用 yield 会更容易和更快。在方法调用期间,与块结合使用的yield关键字允许传递一组附加指令。当在方法中调用 yield 时,方法需要一个包含在其中的块。块只是一段代码,yield 允许我们在某个地方将该代码注入到方法中。

Simple Yield:当在方法体中使用yield关键字时,将允许我们使用代码块调用该方法。下面是简单易懂的收益程序。

# Ruby program of using yield keyword
def geeks
   puts "In the geeks method"
  
   # using yield keyword
   yield
   puts "Again back to the geeks method"
   yield
end
geeks {puts "This is block"}

输出:

In the geeks method
This is block
Again back to the geeks method
This is block


带参数的让步:下面是带参数的让步程序。

# Ruby program of using yield keyword 
# with argument
def gfg
   yield 2*3
   puts "In the method gfg"
   yield 100
end
gfg {|i| puts "block #{i}"}

输出 :

block 6
In the method gfg
block 100

在上面的例子中,yield 语句后面跟有参数。我们甚至可以在 yield 之后传递多个参数。为了接受参数,我们在两条垂直线 (||) 之间放置了一个变量 (i)。

Yield with Return value:可以通过简单地将yield的返回值分配给变量来获得块的返回值。如果我们将 yield 与参数一起使用,它将将该参数传递给块。

# Ruby program of using yield keyword
# with return value
def yield_with_return_value
  geeks_for_geeks = yield
  
  puts geeks_for_geeks
end
  
yield_with_return_value { "Welcome to geeksforgeeks" } 

输出:

Welcome to geeksforgeeks

geeks_for_geeks 变量获取块返回的“Welcome to geeksforgeeks”,并使用 puts 显示。