it-swarm.it

Crea una serie di simboli

C'è un modo più pulito di fare qualcosa del genere?

%w[address city state postal country].map(&:to_sym) 
#=> [:address, :city, :state, :postal, :country]

Avrei immaginato %s avrebbe fatto quello che volevo, ma non è così. Prende tutto tra le parentesi e ne ricava un grande simbolo.

Solo un piccolo fastidio.

121
Drew

Ho scritto la risposta originale nel settembre '11, ma a partire da Ruby 2. c'è un modo più breve per creare una serie di simboli! Questo letterale:

%i(address city state postal country)

fa esattamente quello che vuoi.

341
Joost Baaij

Con il rischio di diventare troppo letterale, penso che il modo più pulito per costruire una serie di simboli sia usare una serie di simboli.

fields = [:address, :city, :state, :postal, :country]

Non riesco a pensare a qualcosa di più conciso di così.

88
Joost Baaij

%i[ ] Matrice di simboli non interpolata, separata da spazi bianchi (dopo Ruby 2.0)

%I[ ] Matrice interpolata di simboli, separata da spazi bianchi (dopo Ruby 2.0)

%i[address city state postal country]

il modo più pulito per farlo è:

%w[address city state postal country].map(&:to_sym)

2
askrynnikov