使用&符号运算符将proc转换为块在结束括号后不起作用

时间:2014-03-22 18:14:38

标签: ruby

使用&符运算符&将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

为什么?

2 个答案:

答案 0 :(得分:3)

你应该将带有&符号的块作为参数传递给

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

答案 1 :(得分:0)

我认为您应该在块

中使用call
FileUtils::cd(FileUtils::pwd) &hey.call

Proc对象只是一个未命名的函数,要运行你应该使用的代码。call,这就是为什么简单地调用hey在你的情况下什么也不做