我正在学习rails并遵循this thread.我被to_proc
法困住了.我认为符号仅仅是字符串的替代品(它们就像字符串,但在内存方面更便宜).如果我还缺少什么符号,请告诉我.请用简单的方式解释to_proc
的含义和用途.
我正在学习rails并遵循this thread.我被to_proc
法困住了.我认为符号仅仅是字符串的替代品(它们就像字符串,但在内存方面更便宜).如果我还缺少什么符号,请告诉我.请用简单的方式解释to_proc
的含义和用途.
有些方法采用块,并且这种模式经常出现在块中:
{|x| x.foo}
人们希望用更简洁的方式来写.为了做到这一点,他们结合使用了符号、方法Symbol#to_proc
、隐式类转换和&
运算符.如果将&
放在参数位置的Proc
实例前面,将被解释为一个块.如果将Proc
实例以外的其他对象与&
组合,则隐式类转换将try 使用在该对象上定义的to_proc
方法(如果有)将其转换为Proc
实例.对于Symbol
实例,to_proc
的工作方式如下:
:foo.to_proc # => ->x{x.foo}
例如,假设你写:
bar(&:foo)
&
运算符与:foo
结合,:foo
不是Proc
实例,因此隐式类cast对其应用Symbol#to_proc
,得到->x{x.foo}
.&
现在适用于此,并被解释为一个块,它给出:
bar{|x| x.foo}