我该如何在Ruby中调用块来使用_id.to_s
?
category_ids = categories.map(&:_id.to_s)
我正在黑客攻击它并执行以下操作:
category_ids = []
categories.each do |c|
category_ids << c.id.to_s
end
我该如何在Ruby中调用块来使用_id.to_s
?
category_ids = categories.map(&:_id.to_s)
category_ids = []
categories.each do |c|
category_ids << c.id.to_s
end
category_ids = categories.map {|c| c._id.to_s }
categories.map { _1._id.to_s }
。 - fn control optioncategory_ids = categories.map(&:_id).map(&:to_s)
测试:
categories = ["sdkfjs","sdkfjs","drue"]
categories.map(&:object_id).map(&:to_s)
=> ["9576480", "9576300", "9576260"]
如果你真的想要链式调用方法,你可以重写Symbol#to_proc
class Symbol
def to_proc
to_s.to_proc
end
end
class String
def to_proc
split("\.").to_proc
end
end
class Array
def to_proc
proc{ |x| inject(x){ |a,y| a.send(y) } }
end
end
strings_arr = ["AbcDef", "GhiJkl", "MnoPqr"]
strings_arr.map(&:"underscore.upcase")
#=> ["ABC_DEF", "GHI_JKL", "MNO_PQR"]
strings_arr.map(&"underscore.upcase")
#=> ["ABC_DEF", "GHI_JKL", "MNO_PQR"]
strings_arr.map(&["underscore", "upcase"])
#=> ["ABC_DEF", "GHI_JKL", "MNO_PQR"]
category_ids = categories.map(&"id.to_s")
Enumerable#map
的文档展示了如何使用块。你看过吗? - the Tin Man