我想知道这样的事情是否可能说我们有
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
你可以提供一些东西,然后使用'某事'作为参数传递一个块。
答案 0 :(得分:1)
即使你可以,我也不确定它是否有意义,因为在传递的块中使用这个值你必须将它分配给一个标识符:
call_something do |arg|
# you want `arg` to be the "unidentified" value
end
此时,它与您之前谈论的“未识别的变量”不同,唯一可以真正代表它的方式是nil
。所以你也可以在第一时间传递nil