Czy jest lepszy sposób na zrobienie czegoś takiego?
%w[address city state postal country].map(&:to_sym)
#=> [:address, :city, :state, :postal, :country]
Myślałem, że %s
zrobiłbym to, co chciałem, ale tak się nie dzieje. Po prostu bierze wszystko między nawiasami i tworzy z tego jeden duży symbol.
Tylko drobna irytacja.
Odpowiedzi:
Oryginalna odpowiedź została napisana we wrześniu 2011 roku, ale począwszy od Rubiego 2.0 , istnieje krótszy sposób tworzenia tablicy symboli! Ten dosłowny:
zrobi dokładnie to, co chcesz.
źródło
%i|a b c|
Ponieważ istnieje ryzyko, że stanie się zbyt dosłowny, myślę, że najczystszym sposobem skonstruowania tablicy symboli jest użycie tablicy symboli.
fields = [:address, :city, :state, :postal, :country]
Nie mogę wymyślić nic bardziej zwięzłego niż to.
źródło
%i[ ]
Nieinterpolowana tablica symboli oddzielona białymi znakami (po Ruby 2.0)%I[ ]
Tablica interpolowana symboli oddzielonych białymi znakami (po Ruby 2.0)%i[address city state postal country]
najczystszym sposobem na to jest:
%w[address city state postal country].map(&:to_sym)
źródło