【发布时间】:2013-12-05 21:22:26
【问题描述】:
假设我有课:
class Car
attr_accessor :brand, :color
def initialize(br, col)
@brand = br
@color = col
end
end
first_car = Car.new 'Mercedes', 'Yellow'
second_car = Car.new 'Jaguar', 'Orange'
third_car = Car.new 'Bentley', 'Pink'
array_of_cars = [first_car, second_car]
所以,我们的想法是在类 Array 中定义一个方法 to_proc,这样就可以发生这种情况:
array_of_cars.map(&[:brand, :color]) #=> [['Mercedes', 'Yellow'], ['Jaguar', 'Orange'], ['Bentley', 'Pink']]
或者我怎么能以某种方式做这样的事情:
[:brand, :color].to_proc.call(first_car) #=> ['Mercedes', 'Yellow']
【问题讨论】:
-
您想在您的
to_proc实现中硬编码&[:brand, :color]吗? -
好吧,如果我能动态地做到这一点,不管对象是什么,那就太好了,但如果你有想法,我会很高兴看到它。
标签: ruby overriding proc