gpt4 book ai didi

ruby-on-rails - 方法 `method` 在 `&Unit.method(:new)` 中做了什么?

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

我是 Rails 的新手,正在尝试弄清楚我给出的代码。 &Unit.method(:new) 中的方法 method 做了什么? &是什么意思? Unit 模型中没有方法 method 并且想知道为什么它可以在那里。最后,我猜 :new 符号创建了 Unit 的新对象?

class Unit
include ActiveModel::Model

attr_accessor :number
end


class Product
include ActiveModel::Model
.........
.........
def units=(values)
@units = values.map(&Unit.method(:new))
end
end

最佳答案

method 方法在类 Object 中定义,因此可用于所有对象。它以方法名称作为参数,并返回可用于反射(reflect)或调用给定方法的 Method 对象。

因此 Unit.method(:new) 为您提供了一个 Method 对象,它表示 Unit.new 方法。

现在,一元 & 运算符接受一个 Proc 对象或可以使用 to_proc 转换为 Proc 的对象>(Method 对象可以),然后将其转换为 block 。

因此 &Unit.method(:new) 创建了一个调用 Unit.new 方法的 block ,使得 values.map(&Unit.method(:new )) 相当于:

values.map do |value|
Unit.new(value)
end

关于ruby-on-rails - 方法 `method` 在 `&Unit.method(:new)` 中做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37924564/

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