是否可以在Ruby中将未定义的变量作为yield参数传递?

时间:2013-10-16 12:31:38

标签: ruby

我想知道这样的事情是否可能说我们有

def call_something
    yield a
end

其中a是未定义的变量?这样的事情是否可行?如果是这样,你能提供一个如何有用的例子吗?

我知道你可以将参数传递给yield,但到目前为止我知道你只能传递具有实际值的实际参数。

澄清一下,我的意思是这样的:

class A
  def initialize
    print "Enter a value: "
    @a = gets.chomp
  end

  def m
    yield @a
  end
end

a = A.new
a.m do |x|
  puts "You entered #{x}"
end

你可以提供一些东西,然后使用'某事'作为参数传递一个块。

1 个答案:

答案 0 :(得分:1)

即使你可以,我也不确定它是否有意义,因为在传递的块中使用这个值你必须将它分配给一个标识符:

call_something do |arg|
  # you want `arg` to be the "unidentified" value
end

此时,它与您之前谈论的“未识别的变量”不同,唯一可以真正代表它的方式是nil。所以你也可以在第一时间传递nil