gpt4 book ai didi

ruby - Ruby 中多个进程的执行顺序

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

我正在尝试一个愚蠢的例子来理解发送到一个方法的多个过程。但是,令我惊讶的一件事是执行顺序。我查看了 Proc 文档,但没有真正找到解释(可能是我看得不够仔细)。

这是一个例子:

def my_block(a, b)
a.call b.call
end

a = Proc.new { puts "hello" }
b = Proc.new { puts " world" }

my_block a, b

输出:

 world
hello

当在一行中给定多个时,proc 执行似乎是从左到右执行的。有人可以详细解释这种行为吗?

最佳答案

这是因为:

a.call b.call

真的是:

a.call(b.call())

因此 b.call() 首先像在任何其他编程语言中一样展开(并运行),并将其结果作为参数传递给 a.

你希望这会产生错误,但在 Ruby 中, block 的额外参数不会导致错误(尽管它是方法的错误)...

您可以使用分号明确告诉 ruby​​ 开始一个新表达式:

a.call; b.call

...但我会说这很不合常理且“非 Ruby”...

关于ruby - Ruby 中多个进程的执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36001063/

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