Arrays ruby优雅地将项目数组包装成一个对象
鉴于: 我想知道一种比这更优雅的方式来将每一项转换为物品:Arrays ruby优雅地将项目数组包装成一个对象,arrays,ruby,Arrays,Ruby,鉴于: 我想知道一种比这更优雅的方式来将每一项转换为物品: class Thing def initialize(object) @object = object end end items = [1,2,3] items.map{| item | Thing.new item} # => [, ] 我认为你的例子非常好。但也许你喜欢这样的东西: items.map{ |item| Thing.new item } # => [<Thing @object=
class Thing
def initialize(object)
@object = object
end
end
items = [1,2,3]
items.map{| item | Thing.new item}
# => [, ]
我认为你的例子非常好。但也许你喜欢这样的东西:
items.map{ |item| Thing.new item }
# => [<Thing @object=1>, <Thing @object=2>, <Thing @object=3>]
items.map(&Thing.method(:new))
这样你就可以写:
# in item.rb
def to_thing
Thing.new(self)
end
您可以使用一元前缀
和运算符:
items.map(&:to_thing)
,这样您就可以这样写:
items.map{ |item| Thing.new item }
# => [<Thing @object=1>, <Thing @object=2>, <Thing @object=3>]
items.map(&Thing.method(:new))
然而,人们似乎对这项提议不太感兴趣。不过,您可以自己对其进行修补,实现起来很简单:
items.map(&Thing)
尽管我对猴子补丁持怀疑态度(主要是因为我不太熟悉,不知道什么时候可以练习),但第一个例子非常有效。谢谢你。你的建议很吸引人!