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

在Ruby中是否可以将未定义的变量作为yield参数传递?,ruby,Ruby,我想知道这样的事情是否可能,比如说我们有 def call_something yield a end 其中a是未定义的变量?这种事情可能吗?如果可能的话,你能举个例子说明它是如何有用的吗 我知道可以将参数传递给yield,但到目前为止,我知道只能传递具有实际值的实际参数 澄清一下,我的意思是这样的: class A def initialize print "Enter a value: " @a = gets.chomp end def m y

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

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

您可以提供一些内容,然后使用该“内容”作为参数传递一个块。

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

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

在这一点上,它与您之前谈论的“未识别变量”不同,您真正能够表示它的唯一方法是将其表示为
nil
。因此,您不妨首先通过
nil

为什么要这样做?只是编辑了我的问题以澄清我的意思。该代码应该有效。实例变量在未定义时计算为零。