我有以下关闭:
def func
def inner_func
list << 3 # how to append an element to the outer `list`?
end
list = []
inner_func
list
end
我不确定如何从list
向inner_func
添加内容,因为上述尝试是错误的。
答案 0 :(得分:2)
使用实例方法,如下所示:
def func
def inner_func
@list << 3 # how to append an element to the outer `list`?
end
@list = []
inner_func
@list
end
但请看一下this - 关于Ruby和嵌套方法。
干净的解决方法示例:
def func
list = []
inner_func list # => [3]
inner_func list # => [3, 3]
end
def inner_func(list)
list << 3
end
答案 1 :(得分:2)
Ruby没有嵌套方法。它确实有lambda,恰好是闭包。
def func
list = []
l = ->{ list << 3}
l.call
p list
end
func # => [3]