Ruby 是否可以在一个区块内调用收益率?

Ruby 是否可以在一个区块内调用收益率?,ruby,Ruby,我感兴趣的是是否可以做到这一点,以及语法是什么。我在: 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 提前thx一个产量仅在一个采用块的方法中才有意义 是的,它们可以筑巢。请注意: 遍历仍然沿着堆栈进行

我感兴趣的是是否可以做到这一点,以及语法是什么。我在:

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


提前thx

一个
产量
仅在一个采用块的方法中才有意义

是的,它们可以筑巢。请注意:

  • 遍历仍然沿着堆栈进行;及
  • 块(和
    产量
    )与方法严格相关
  • 例如:

    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
    

    第二个收益率将在全球范围内进行评估,而不是在
    say_it
    method中进行评估预期的产出是什么?
    say_it
    是从哪里调用的?只是从cli脚本或其他什么地方调用的