to_proc 方法在 Ruby 中意味着什么?

2024-05-26

我正在学习 Rails 并关注这个线程 https://stackoverflow.com/questions/1961030。我被困住了to_proc方法。我认为符号只是字符串的替代品(它们就像字符串,但在内存方面更便宜)。如果我还缺少任何其他符号,请告诉我。请简单解释一下什么to_proc意味着什么以及它的用途。


有些方法需要一个块,并且这种模式经常出现在块中:

{|x| x.foo}

人们希望以更简洁的方式来写它。为了做到这一点,他们使用了以下组合:符号、方法Symbol#to_proc、隐式类转换,以及&操作员。如果你把&在一个Proc参数位置的实例,将被解释为一个块。如果您组合除Proc实例与&,然后隐式类转换将尝试将其转换为Proc实例使用to_proc在该对象上定义的方法(如果有)。如果出现Symbol实例,to_proc以这种方式工作:

:foo.to_proc # => ->x{x.foo}

例如,假设您写:

bar(&:foo)

The &运算符与:foo,这不是一个Proc实例,因此隐式类转换适用Symbol#to_proc给它,这给了->x{x.foo}. The &现在适用于此并被解释为一个块,它给出:

bar{|x| x.foo}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

to_proc 方法在 Ruby 中意味着什么? 的相关文章

随机推荐