Ruby 在右括号后,使用“与”运算符将proc转换为块不起作用

Ruby 在右括号后,使用“与”运算符将proc转换为块不起作用,ruby,Ruby,看起来,在Ruby中,使用AND运算符&将proc转换为块并不总是有效: 需要“fileutils” hi=proc do将“hi!”结束 嘿=proc do将“嘿!”放在末尾 def m 产量 结束 m&hi打印“hi!” FileUtils::cd(FileUtils::pwd)&hey#不打印任何内容 为什么?我认为您应该像在区块中一样使用call here FileUtils::cd(FileUtils::pwd) &hey.call Proc objects只是一个未命名的

看起来,在Ruby中,使用AND运算符
&
将proc转换为块并不总是有效:

需要“fileutils”
hi=proc do将“hi!”结束
嘿=proc do将“嘿!”放在末尾
def m
产量
结束
m&hi打印“hi!”
FileUtils::cd(FileUtils::pwd)&hey#不打印任何内容

为什么?

我认为您应该像在区块中一样使用call here

FileUtils::cd(FileUtils::pwd) &hey.call

Proc objects只是一个未命名的函数,要在其中运行代码,您应该使用。这就是为什么在您的情况下只调用
什么都不做

我认为您应该像在块中那样使用call here

FileUtils::cd(FileUtils::pwd) &hey.call

Proc objects只是一个未命名的函数,要在其中运行代码,您应该使用。这就是为什么在您的情况下只调用
什么都不做

我认为您应该像在块中那样使用call here

FileUtils::cd(FileUtils::pwd) &hey.call

Proc objects只是一个未命名的函数,要在其中运行代码,您应该使用。这就是为什么在您的情况下只调用
什么都不做

我认为您应该像在块中那样使用call here

FileUtils::cd(FileUtils::pwd) &hey.call

Proc objects只是一个未命名的函数,要在其中运行代码,您应该使用它。这就是为什么简单地调用
hey
在您的情况下什么都不做

您应该使用符号和作为参数传递块,如

FileUtils::cd(FileUtils::pwd, &hi)

你应该像这样用符号和来传递块

FileUtils::cd(FileUtils::pwd, &hi)

你应该像这样用符号和来传递块

FileUtils::cd(FileUtils::pwd, &hi)

你应该像这样用符号和来传递块

FileUtils::cd(FileUtils::pwd, &hi)


这是可行的,但我觉得很奇怪!你能解释一下这里的
call
是什么意思吗?我已经更新了答案
m&hi
之所以有效,是因为在这种情况下,
yield
语句正在调用一个块。
m
cd
之间有什么区别?我想我已经找到了
FileUtils::cd(FileUtils::pwd)&hey.call
工作的原因。它必须与
nothing=hey.call相同;FileUtils::cd(FileUtils::pwd)¬hing
。这并不能解释为什么
FileUtils::cd(FileUtils::pwd)&hey
不能像我期望的那样工作。这是可行的,但我觉得很奇怪!你能解释一下这里的
call
是什么意思吗?我已经更新了答案
m&hi
之所以有效,是因为在这种情况下,
yield
语句正在调用一个块。
m
cd
之间有什么区别?我想我已经找到了
FileUtils::cd(FileUtils::pwd)&hey.call
工作的原因。它必须与
nothing=hey.call相同;FileUtils::cd(FileUtils::pwd)¬hing
。这并不能解释为什么
FileUtils::cd(FileUtils::pwd)&hey
不能像我期望的那样工作。这是可行的,但我觉得很奇怪!你能解释一下这里的
call
是什么意思吗?我已经更新了答案
m&hi
之所以有效,是因为在这种情况下,
yield
语句正在调用一个块。
m
cd
之间有什么区别?我想我已经找到了
FileUtils::cd(FileUtils::pwd)&hey.call
工作的原因。它必须与
nothing=hey.call相同;FileUtils::cd(FileUtils::pwd)¬hing
。这并不能解释为什么
FileUtils::cd(FileUtils::pwd)&hey
不能像我期望的那样工作。这是可行的,但我觉得很奇怪!你能解释一下这里的
call
是什么意思吗?我已经更新了答案
m&hi
之所以有效,是因为在这种情况下,
yield
语句正在调用一个块。
m
cd
之间有什么区别?我想我已经找到了
FileUtils::cd(FileUtils::pwd)&hey.call
工作的原因。它必须与
nothing=hey.call相同;FileUtils::cd(FileUtils::pwd)¬hing
。这并不能解释为什么
FileUtils::cd(FileUtils::pwd)&hey
不能像我期望的那样工作。哦,我从来没有注意过。所以,不同之处在于,在
m
中,块是唯一的参数。我猜在
f(x)&p
中,
&
被解释为一个二进制运算符。哦,我从来没有注意过。所以,不同之处在于,在
m
中,块是唯一的参数。我猜在
f(x)&p
中,
&
被解释为一个二进制运算符。哦,我从来没有注意过。所以,不同之处在于,在
m
中,块是唯一的参数。我猜在
f(x)&p
中,
&
被解释为一个二进制运算符。哦,我从来没有注意过。因此,区别在于在
m
中,块是唯一的参数。我猜在
f(x)&p
中,
被解释为二进制运算符。