Att lagra variabler inom variabler är en vanlig sak i Rubin och kallas ofta en "datastruktur. "Det finns många olika datastrukturer, den enklaste är matrisen.
Program måste ofta hantera samlingar av variabler. Till exempel måste ett program som hanterar din kalender ha en lista över veckodagarna. Varje dag måste lagras i en variabel och en lista över dem kan lagras tillsammans i en matrisvariabel. Genom den ena variabeln kan du få åtkomst till var och en av dagarna.
Skapa tomma matriser
Du kan skapa en tom matris genom att skapa ett nytt Array-objekt och lagra det i en variabel. Denna matris kommer att vara tom; Du måste fylla den med andra variabler för att använda den. Detta är ett vanligt sätt att skapa variabler om du skulle läsa en lista över saker från tangentbordet eller från en fil.
I följande exempelprogram skapas en tom matris med hjälp av array-kommandot och tilldelningsoperatören. Tre strängar (ordnade teckensekvenser) läses från tangentbordet och "skjuts" eller läggs till i slutet av matrisen.
#! / usr / bin / env ruby
array = Array.new
3. gånger gör
str = gets.chomp
array.push str
slutet
Använd en Array Literal för att lagra känd information
En annan användning av matriser är att lagra en lista över saker du redan vet när du skriver programmet, till exempel veckodagarna. För att lagra veckodagarna i en matris kan du skapa en tom matris och lägga till dem en efter en i matrisen som i föregående exempel, men det finns ett enklare sätt. Du kan använda en matris bokstavligen.
Vid programmering är en "bokstavlig" en typ av variabel som är inbyggd i själva språket och har en speciell syntax för att skapa det. Till exempel, 3 är en numerisk bokstavlig och "Rubin" är en sträng bokstavlig. En matrisbokstav är en lista över variabler som är inneslutna i fyrkantiga parenteser och separerade med komma, som [ 1, 2, 3 ]. Observera att alla typer av variabler kan lagras i en matris, inklusive variabler av olika typer i samma array.
Följande exempelprogram skapar en matris som innehåller veckodagarna och skriver ut dem. En array letteral används och varje loop används för att skriva ut dem. Anteckna det varje är inte inbyggt i Ruby-språket, det är snarare en funktion av matrisvariabeln.
#! / usr / bin / env ruby
dagar = ["måndag",
"Tisdag",
"Onsdag",
"Torsdag",
"Fredag",
"Saturday"
"Sunday"
]
day.each do | d |
sätter d
slutet
Använd indexoperatören för att komma åt individuella variabler
Utöver enkel looping över en matris - undersöka varje enskild variabel i ordning - kan du också få åtkomst till enskilda variabler från en matris med hjälp av indexoperatören. Indexoperatören tar ett nummer och hämtar en variabel från matrisen vars position i arrayen matchar det numret. Indexnummer börjar på noll, så den första variabeln i en matris har ett index på noll.
Så till exempel för att hämta den första variabeln från en matris som du kan använda array [0], och för att hämta den andra kan du använda array [1]. I följande exempel lagras en lista med namn i en matris och hämtas och skrivs ut med indexoperatören. Indexoperatören kan också kombineras med tilldelningsoperatören för att ändra värdet på en variabel i en matris.
#! / usr / bin / env ruby
names = ["Bob", "Jim",
"Joe", "Susan"]
sätter namn [0] # Bob
sätter namn [2] # Joe
# Byt Jim till Billy
names [1] = "Billy"