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