显然,Ruby 可以使代码块返回带有符号的实例变量的值。考虑:
class Person
attr_accessor :fn
end
def give(n,&b)
i=0
while(i<n)
aa = Person.new
aa.fn = "name #{i}"
i=i+1
puts b.call(aa)
end
end
现在,give(5, &:fn)
两者give(5) {|x| x.fn}
都给
name 0
name 1
name 2
name 3
name 4
=> nil
但&:fn
真正的意思是什么?我知道&符号可以将 Proc 转换为块,例如
bb = Proc.new {|x| x.fn}
give(5, &bb)
那么这个符号:fn
是什么意思呢?我在哪里可以看到这样的使用文档?我们可以使用符号来访问实例变量,例如 sayperson:new
或person[:new]
吗?