gpt4 book ai didi

ruby - 是否可以在一个 block 内调用 yield ?

转载 作者:数据小太阳 更新时间:2023-10-29 07:30:34 24 4
gpt4 key购买 nike

我对这是否可以完成以及语法是什么感兴趣。我在:

def say_it
puts "before"
yield("something here")
puts "after"
end

say_it do |val|
puts "here is " + val
yield("other things") # ???
end

可能不会,但也许如果 block 被转换为 Proc?

提前谢谢

最佳答案

yield 只有在 一个接受 block 的方法中才有意义。

是的,它们可以嵌套。请注意:

  1. 遍历仍然沿着堆栈进行;和
  2. block (和 yield)与方法严格相关。

例子:

def double(x)
yield x * 2
end

def square_after_double(x)
double(x) do |r|
# Yields to the block given to the current method.
# The location of the yield inside another block
# does not change a thing.
yield r * r
end
end

square_after_double(3) do |r|
puts "doubled and squared: " + r.to_s
end

关于ruby - 是否可以在一个 block 内调用 yield ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14062246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com