gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:22:15 26 4
gpt4 key购买 nike

我正在学习 Rails 并关注 this thread .我坚持使用 to_proc 方法。我只将符号视为字符串的替代品(它们类似于字符串,但在内存方面更便宜)。如果还有什么我缺少的符号,请告诉我。请用简单的方式解释to_proc的含义及其用途。

最佳答案

有些方法采用一个 block ,并且这种模式经常出现在一个 block 中:

{|x| x.foo}

人们喜欢用更简洁的方式来写。为了做到这一点,他们使用了以下组合:符号、方法 Symbol#to_proc、隐式类转换和 & 运算符。如果您将 & 放在参数位置的 Proc 实例前面,它将被解释为一个 block 。如果您将 Proc 实例以外的其他东西与 & 组合,则隐式类转换将尝试使用 将其转换为 Proc 实例to_proc 在该对象上定义的方法(如果有的话)。对于 Symbol 实例,to_proc 以这种方式工作:

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

例如,假设你写:

bar(&:foo)

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

bar{|x| x.foo}

关于ruby - to_proc 方法在 Ruby 中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14881125/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com