-3

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

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

你可以在哪里提供一些东西,然后使用那个“东西”作为参数传递一个块。

4

1 回答 1

1

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

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

那时,它与您之前谈论的“未识别变量”不同,您真正可以将其表示为的唯一方法是nil. nil所以你不妨一开始就通过

于 2013-10-16T12:35:36.937 回答