zainicjować tablicę w ten sposób:Jak zainicjować tablicę w jednym kroku używając Ruby?
array = Array.new
array << '1' << '2' << '3'
jest to możliwe do zrobienia, że w jednym kroku? Jeśli tak to jak?
zainicjować tablicę w ten sposób:Jak zainicjować tablicę w jednym kroku używając Ruby?
array = Array.new
array << '1' << '2' << '3'
jest to możliwe do zrobienia, że w jednym kroku? Jeśli tak to jak?
jak inni to zauważyli, można użyć tablicę dosłowne:
array = [ '1', '2', '3' ]
Można też, dla przykładu, użyj gama:
array = ('1'..'3').to_a # parentheses are required
# or
array = *('1'..'3') # parentheses not required, but included for clarity
W przypadku tablic z wieloma znakami rozdzielonymi odstępami białymi, najprościej jest ta notacja:
array = %w[ 1 2 3 ]
Ogólnie można przekazać blok Array.new i używać, aby określić, jaka jest wartość dla każdego wpisu będą:
array = Array.new(3){ |i| (i+1).to_s }
Wreszcie, choć nie wytwarzają taką samą tablicę trzech ciągów jako inne odpowiedzi powyżej, zauważ także, że możesz używać liczników w Ruby 1.8.7+, aby tworzyć tablice; na przykład:
array = 1.step(17,3).to_a
#=> [1, 4, 7, 10, 13, 16]
Plus jeden dla szczegółowej odpowiedzi, mimo że wolę ikonę od 'to_a' (' [* '1' .. '3'] '). –
@MichaelKohl Zgadzam się; Byłem pod wpływem (błędnego) wrażenia, że nie można wyświetlać zakresów w 1.8.6. Dodam to, dzięki! Zauważ, że nie musisz się rozprowadzać w literaturze (chyba, że komponujesz razem z ikoną). – Phrogz
Wiem, po prostu w tym celu używam głównie splat (compositing) i podoba mi się także to, że pokazuje, z czego wyszedłeś. –
Aby stworzyć taką tablicę można zrobić:
array = ['1', '2', '3']
można zainicjować tablicę w jednym kroku pisząc elementy w []
tak:
array = ['1', '2', '3']
Jeśli masz tablicę ciągów można również zainicjować w następujący sposób:
array = %w{1 2 3}
prostu oddzielić każdy element z każdej spacji
wraz z powyższych odpowiedzi, można to zrobić za
=> [*'1'.."5"] #remember *
=> ["1", "2", "3", "4", "5"]
W wersji 1.9 możesz to zrobić w następujący sposób: '>> [*? 1 ..? 5] # => [" 1 "," 2 "," 3 "," 4 "," 5 "]". –
Oneliner:
array = [] << 1 << 2 << 3 #this is for fixnums.
lub
a = %w| 1 2 3 4 5 |
lub
a = [*'1'..'3']
lub
a = Array.new(3, '1')
lub
a = Array[*'1'..'3']
dlaczego ktoś miałby głosować to ....? – pankajdoharey
Nie przegłosowałem go, ale zgaduję, ponieważ wywołało to trzy metody i stopniowo powiększa tablicę, w przeciwieństwie do '[1,2,3]', które powoduje pojedynczą inicjalizację. Ponadto twoja postać ma więcej postaci. Ponadto utworzyłeś tablicę Fixnums, podczas gdy OP pytał o tablicę łańcuchów. – Phrogz
Aby udowodnić Nie więcej niż One Sześć sposobów, aby to zrobić:
plus_1 = 1.method(:+)
Array.new(3, &plus_1) # => [1, 2, 3]
: 1.Metoda (: +) nie było możliwe, można również zrobić
plus_1 = Proc.new {|n| n + 1}
Array.new(3, &plus_1) # => [1, 2, 3]
Jasne, że to przesada w tym scenariuszu, ale jeśli plus_1
był naprawdę długi wyraz, możesz go umieścić na oddzielnej linii od tworzenie tablicy.
Możesz to zrobić po prostu z notacją %w
w tablicach ruby.
array = %w(1 2 3)
Doda tablicę wartości 1,2,3 do druku arrayand zewnątrz wyjścia jak ["1", "2", "3"]
Można zrobić
array = ['1', '2', '3']
jak inni to zauważyli, można również zainicjować tablicą% wag zapisu tak:
array = %w(1 2 3)
lub
array = %w[1 2 3]
Należy pamiętać, że w obu przypadkach każdy element jest ciągiem, a nie liczbą całkowitą. Więc jeśli chcesz tablicę, której elementami są liczbami całkowitymi, nie należy owinąć każdy element z apostrofami:
array_of_integers = [1, 2, 3]
Ponadto, nie trzeba postawić przecinek między elementami (co jest konieczne przy tworzeniu tablicę bez tego% w zapisie). Jeśli zrobisz to (co często robił przez pomyłkę), na przykład:
wrong_array = %w(1, 2, 3)
jego elementy będą trzy ciągi ---- "1", "2", "3". Więc jeśli zrobić:
puts wrong_array
wyjście będzie:
1,
2,
3
=>nil
który nie jest to, co chcemy tutaj.
Mam nadzieję, że pomoże to wyjaśnić sprawę!
+1 tylko dla powielających powtarzających się pojedynczych linii. :) – Phrogz
@Phrogz nieco krótszy: 'tablica = Array.new << 1 << 2 << 3';) –
@AlexanderSuraphel Tworzy tablicę Fixnums zamiast tablic ciągów. – Phrogz