it-swarm.com.de

Wie initialisiert man ein Array mit Ruby in einem Schritt?

Ich initialisiere ein Array auf diese Weise:

array = Array.new
array << '1' << '2' << '3'

Kann man das in einem Schritt machen? Wenn das so ist, wie?

92
user502052

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 mit durch Leerzeichen getrennten Zeichenfolgen können Sie die Percent String-Syntax verwenden:

array = %w[ 1 2 3 ]

Sie können auch einen Block an Array.new übergeben, um zu bestimmen, wie der Wert für jeden Eintrag lautet:

array = Array.new(3) { |i| (i+1).to_s }

Wenn Sie nicht dasselbe Array aus drei Strings erstellen wie die anderen obigen Antworten, beachten Sie auch, dass Sie in Ruby 1.8.7+ Enumeratoren zum Erstellen von Arrays verwenden können. zum Beispiel:

array = 1.step(17,3).to_a
#=> [1, 4, 7, 10, 13, 16]
176
Phrogz

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']
16
pankajdoharey

Neben den obigen Antworten können Sie auch dies tun

    =>  [*'1'.."5"]   #remember *
    => ["1", "2", "3", "4", "5"]
8
RameshVel

Um zu beweisen, dass es mehr gibt als Ein Sechs Möglichkeiten, es zu tun:

plus_1 = 1.method(:+)
Array.new(3, &plus_1) # => [1, 2, 3]

Wenn 1.Methode (: +) nicht möglich ist, können Sie dies auch tun

plus_1 = Proc.new {|n| n + 1}
Array.new(3, &plus_1) # => [1, 2, 3]

Sicher, in diesem Szenario ist es übertrieben. Wenn jedoch plus_1 ein wirklich langer Ausdruck war, möchten Sie ihn vielleicht in eine separate Zeile von der Array-Erstellung einfügen.

7
Andrew Grimm

Wenn Sie ein String-Array haben, können Sie es auch folgendermaßen initialisieren:

array = %w{1 2 3}

trennen Sie einfach jedes Element mit einem Leerzeichen

3
John Douthat

Du kannst tun

array = ['1', '2', '3']

Wie bereits erwähnt, können Sie ein Array auch mit der% w-Notation 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 ganze Zahl ist. Wenn Sie also ein Array wünschen, dessen Elemente Ganzzahlen sind, sollten Sie jedes Element nicht mit Apostrophen umschließen.

array_of_integers = [1, 2, 3]

Sie müssen auch kein Komma zwischen den Elementen einfügen (dies ist erforderlich, wenn Sie ein Array ohne diese% w-Notation erstellen). Wenn Sie dies tun (was ich oft aus Versehen tat), wie in:

wrong_array = %w(1, 2, 3)

seine Elemente bestehen aus drei Strings ---- "1", "2", "3". Also wenn du es tust:

puts wrong_array

die Ausgabe wird sein: 

1,
2,
3
=>nil

was wir hier nicht wollen.

Hoffe, das hilft, den Punkt zu klären!

2
tg_freelancer

Um ein solches Array zu erstellen, können Sie Folgendes tun:

array = ['1', '2', '3']
2
Reese Moore

Sie können ein Array in einem Schritt initialisieren, indem Sie die Elemente in [] wie folgt schreiben:

array = ['1', '2', '3']
1
sepp2k

Sie können dies einfach mit der %w-Notation in Ruby-Arrays tun.

array = %w(1 2 3)

Die Array-Werte 1, 2, 3 werden zum Array hinzugefügt und die Ausgabe als ["1", "2", "3"] ausgegeben.

0
Prabhakar