Ich initialisiere ein Array folgendermaßen:
array = Array.new
array << '1' << '2' << '3'
Ist das in einem Schritt möglich? Wenn das so ist, wie?
array = Array.new << 1 << 2 << 3
;)
1
zu '1'
.
Ich initialisiere ein Array folgendermaßen:
array = Array.new
array << '1' << '2' << '3'
Ist das in einem Schritt möglich? Wenn das so ist, wie?
array = Array.new << 1 << 2 << 3
;)
1
zu '1'
.
Antworten:
Sie können ein Array-Literal verwenden:
array = [ '1', '2', '3' ]
Sie können auch einen Bereich verwenden:
array = ('1'..'3').to_a # parentheses are required
# or
array = *('1'..'3') # parentheses not required, but included for clarity
Für Arrays von durch Leerzeichen getrennten Zeichenfolgen können Sie die Percent String-Syntax verwenden :
array = %w[ 1 2 3 ]
Sie können auch einen Block übergeben, Array.new
um den Wert für jeden Eintrag zu bestimmen:
array = Array.new(3) { |i| (i+1).to_s }
Beachten Sie auch, dass Sie in Ruby 1.8.7+ Enumeratoren verwenden können, um Arrays zu erstellen, obwohl nicht das gleiche Array aus drei Zeichenfolgen wie in den anderen obigen Antworten erstellt wird. beispielsweise:
array = 1.step(17,3).to_a
#=> [1, 4, 7, 10, 13, 16]
to_a
( [*'1'..'3']
).
Array[ "1","2","3"] #=> ["1","2","3"]
(Ich glaube, diese Methode hat nichts mit dem Array-Literal-Konstruktor zu tun.) Sie können auch das Kernel # Array der obersten Ebene verwenden (Methodenname sieht aus wie ein Klassenname)Array(1..5) #=> [1,2,3,4,5]
Einzeiler:
array = [] << 1 << 2 << 3 #this is for fixnums.
oder
a = %w| 1 2 3 4 5 |
oder
a = [*'1'..'3']
oder
a = Array.new(3, '1')
oder
a = Array[*'1'..'3']
[1,2,3]
einer einzelnen Initialisierung. Deiner ist mehr Charaktere. Außerdem haben Sie ein Array von Fixnums erstellt, während das OP nach einem Array von Zeichenfolgen gefragt hat.
Zusammen mit den obigen Antworten können Sie dies auch tun
=> [*'1'.."5"] #remember *
=> ["1", "2", "3", "4", "5"]
>> [*?1..?5] #=> ["1", "2", "3", "4", "5"]
.
Mehr als zu beweisen , gibt es One Six Ways To Do It:
plus_1 = 1.method(:+)
Array.new(3, &plus_1) # => [1, 2, 3]
Wenn 1.Methode (: +) nicht möglich wäre, könnten Sie dies auch tun
plus_1 = Proc.new {|n| n + 1}
Array.new(3, &plus_1) # => [1, 2, 3]
Sicher, es ist in diesem Szenario übertrieben, aber wenn plus_1
es sich um einen wirklich langen Ausdruck handelt, möchten Sie ihn möglicherweise in eine separate Zeile von der Array-Erstellung einfügen.
Du kannst tun
array = ['1', '2', '3']
Wie andere angemerkt haben, können Sie ein Array auch mit der% w-Notation wie folgt initialisieren:
array = %w(1 2 3)
oder
array = %w[1 2 3]
Bitte beachten Sie, dass in beiden Fällen jedes Element eine Zeichenfolge und keine Ganzzahl ist. Wenn Sie also ein Array möchten, dessen Elemente Ganzzahlen sind, sollten Sie nicht jedes Element mit Apostrophen umschließen:
array_of_integers = [1, 2, 3]
Außerdem müssen Sie kein Komma zwischen die Elemente setzen (was erforderlich ist, wenn Sie ein Array ohne diese% w-Notation erstellen). Wenn Sie dies tun (was ich oft versehentlich getan habe), wie in:
wrong_array = %w(1, 2, 3)
seine Elemente werden drei Zeichenfolgen sein ---- "1", "2", "3". Wenn Sie dies tun:
puts wrong_array
Die Ausgabe lautet:
1,
2,
3
=>nil
Das ist nicht das, was wir hier wollen.
Hoffe das hilft den Punkt zu klären!
So erstellen Sie ein solches Array:
array = ['1', '2', '3']
Wenn Sie ein Array von Zeichenfolgen haben, können Sie es auch folgendermaßen initialisieren:
array = %w{1 2 3}
Trennen Sie einfach jedes Element mit einem Leerzeichen
Sie können dies einfach mit %w
Notation in Ruby-Arrays tun .
array = %w(1 2 3)
Es werden die Array-Werte 1,2,3 zum Array hinzugefügt und die Ausgabe als gedruckt ["1", "2", "3"]