W języku Ruby, jaki jest najbardziej ekspresywny sposób mapowania tablicy w taki sposób, że niektóre elementy są modyfikowane , a pozostałe pozostały nietknięte:?Mapowanie tablicy modyfikującej tylko elementy pasujące do określonego warunku
To jest prosta droga, aby to zrobić:
old_a = ["a", "b", "c"] # ["a", "b", "c"]
new_a = old_a.map { |x| (x=="b" ? x+"!" : x) } # ["a", "b!", "c"]
Pominięcie "leave-alone" przypadek oczywiście jeśli nie wystarczy:
new_a = old_a.map { |x| x+"!" if x=="b" } # [nil, "b!", nil]
Chciałbym coś takiego jak to:
new_a = old_a.map_modifying_only_elements_where (Proc.new {|x| x == "b"})
do |y|
y + "!"
end
# ["a", "b!", "c"]
Czy jest jakiś dobry sposób, aby zrobić to w Ruby (lub może Rails ma jakieś metody convenience którego jeszcze nie znalazłem)?
Dziękuję wszystkim za odpowiedź. Podczas gdy wspólnie przekonaliście mnie, że najlepiej jest korzystać z operatora trójskładnikowego pod numerem map
, niektórzy z was napisali bardzo ciekawe odpowiedzi!
Myślę, że rzecz #map jest w porządku tak jak jest. ;-) –
Tak, zgadzam się. Możesz usunąć pareny, jeśli sprawi, że będziesz się bardziej podobać! –
Zamknięte? FTL. Spójrz na mój post = P –