使用&符运算符&
将proc转换为块似乎并不总是在Ruby中工作:
require 'fileutils'
hi = proc do puts "Hi!" end
hey = proc do puts "Hey!" end
def m
yield
end
m &hi # prints "Hi!"
FileUtils::cd(FileUtils::pwd) &hey # does not print anything
为什么?
答案 0 :(得分:3)
你应该将带有&符号的块作为参数传递给
FileUtils::cd(FileUtils::pwd, &hi)
答案 1 :(得分:0)
我认为您应该在块
中使用callFileUtils::cd(FileUtils::pwd) &hey.call
Proc对象只是一个未命名的函数,要运行你应该使用的代码。call,这就是为什么简单地调用hey
在你的情况下什么也不做