我是Rails的新手并试图找出我给出的代码。方法method
在&Unit.method(:new)
中的作用是什么? &
的含义是什么?单元模型中没有方法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
答案 0 :(得分:8)
方法method
在类Object
中定义,因此可用于所有对象。它以方法的名称作为参数,并返回一个Method
对象,可用于反映或调用给定的方法。
因此Unit.method(:new)
会为您提供一个代表方法Method
的{{1}}对象。
现在,一元Unit.new
运算符使用&
对象或可以使用Proc
转换为Proc
的对象(to_proc
个对象可以)然后将其转换为阻止。
因此Method
会创建一个调用&Unit.method(:new)
方法的块,使Unit.new
等效于:
values.map(&Unit.method(:new))