2009-03-31 10 views
27

Qual è l'equivalente di Linq per il metodo map! or collect! in Ruby?Mappa Linq! o raccogliere!

a = [ "a", "b", "c", "d" ] 
    a.collect! {|x| x + "!" } 
    a    #=> [ "a!", "b!", "c!", "d!" ] 

ho potuto fare questo iterare sulla collezione con un foreach, ma mi chiedevo se ci fosse una soluzione più elegante LINQ.

+0

Linq adotta un approccio funzionale, in modo che di solito non farà un in-luogo modifica come nel tuo esempio sopra. Tuttavia, questo corrisponde più all'uso previsto della mappa e raccoglie in ruby ​​(senza il!) –

risposta

38

mappa = Seleziona

var x = new string[] { "a", "b", "c", "d"}.Select(s => s+"!"); 
24

La funzione di ordine superiore map è meglio rappresentato in Enumerable.Select che è un metodo di estensione in System.Linq.

Nel caso in cui si sono curiosi le altre funzioni di ordine superiore scoppiano in questo modo:

reduce ->Enumerable.Aggregate
filter ->Enumerable.Where