我將如何調用該塊在紅寶石中使用_id.to_s
?如何在ruby中使用映射方法調用方法鏈?
category_ids = categories.map(&:_id.to_s)
我盜號的,做現在以下幾點:
category_ids = []
categories.each do |c|
category_ids << c.id.to_s
end
我將如何調用該塊在紅寶石中使用_id.to_s
?如何在ruby中使用映射方法調用方法鏈?
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 }
category_ids = categories.map(&:_id).map(&:to_s)
測試:
categories = ["sdkfjs","sdkfjs","drue"]
categories.map(&:object_id).map(&:to_s)
=> ["9576480", "9576300", "9576260"]
如果你真的想鏈的方法,您可以覆蓋符號#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"]
有趣。作爲一個長期的Rubyist,我從來沒有想到有人會知道新的Symbol#to_proc快捷方式而不知道標準塊的形式。 –
['Enumerable#map'](http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-map)的文檔顯示瞭如何使用塊。你看過嗎? –