Ruby is een bekende programmeertaal. Het is gericht op het verbeteren van eenvoud en productiviteit. Het is ook een volledig objectgeoriënteerde programmeertaal. Daarnaast heeft Ruby een elegante syntaxis die natuurlijk leest en gemakkelijk te schrijven is.
Bij elk programmeren is het beheren van verschillende datatypes vereist. Een datatype beschrijft een specifieke klasse van gegevens. Het vertelt de machine hoe deze met de gegevens in het programma moet omgaan. Datatypes zijn cruciaal om te bepalen wat er met de gegevens kan worden gedaan (inclusief de bewerkingen die kunnen worden uitgevoerd). In deze handleiding zullen we dieper ingaan op de datatypes die beschikbaar zijn in Ruby. We zullen ook dynamisch typen verkennen. Met deze functie kan Ruby automatisch het datatype van een variabele bepalen zonder deze expliciet te declareren. Laten we beginnen!
Vereisten
Om de stappen die in deze handleiding worden gedemonstreerd te oefenen en te implementeren, heeft u de volgende componenten nodig:
- Een correct geconfigureerd Linux-systeem. Lees meer over het opzetten van een persoonlijke Ubuntu-server op CloudSigma.
- Een correct geconfigureerde Ruby-ontwikkelomgeving. Bekijk de officiële documentatie voor het installeren van Ruby op Ubuntu (met behulp van APT).
Datatypes in Ruby
Ruby beschikt over alle gangbare datatypes die u in elke programmeertaal tegenkomt: integers, floats, strings, arrays, symbols, hashes, enz. Vervolgens geven we een overzicht van hoe u met de verschillende datatypes van Ruby kunt werken.
Step 1 – Integers
Net als bij wiskunde zijn integers in computerprogrammering hele getallen. De waarde kan positief, negatief of 0 zijn. Het waardebereik is als volgt:
|
1 |
{-∞, …, -1, 0, 1, …, ∞} |
Tijd om integers uit te proberen in Ruby. Het eerste voorbeeld is het afdrukken van een eenvoudige integer op het scherm:
|
1 2 |
print 99 print "\n" |
Vervolgens gaan we werken met een integer-variabele. Hier bevat de variabele sample_int een integer-waarde (99) en de print-functie drukt de waarde van de variabele af op het scherm:
|
1 2 3 |
sample_int = 99 print sample_int print "\n" |
We kunnen ook rekenen met integers. Het volgende voorbeeld toont een eenvoudige optelling van twee integer-getallen:
|
1 2 3 |
sample_int = 99 + 100 print sample_int print "\n" |
Wanneer we met grote getallen werken, gebruiken we vaak komma's (,) om het makkelijker leesbaar te maken. Bijvoorbeeld, één miljoen (1000000) wordt geschreven als 1,000,000 voor een betere leesbaarheid. Hoewel het gebruik van komma's verboden is, staat Ruby het gebruik van underscores ( _) toe als scheidingsteken. Bekijk het volgende voorbeeld:
|
1 2 3 |
sample_int = 1_000_999 print sample_int print "\n" |
Het gebruik van underscores verbetert de leesbaarheid van de code, vooral bij het werken met grote integer-waarden.
Step 2 – Floating-Point Numbers
Een floating-point getal (of kortweg float) vertegenwoordigt een reëel getal. Net als in de wiskundige definitie kunnen reële getallen rationeel of irrationeel zijn. In Ruby is een float in feite een getal dat een decimaal punt bevat.
Laten we proberen een float-waarde op het scherm af te drukken:
|
1 2 |
print 55.66 print "\n" |
Het volgende voorbeeld toont het declareren van een float-variabele:
|
1 2 3 |
sample_float = 55.66 print sample_float print "\n" |
We kunnen ook verschillende wiskundige bewerkingen uitvoeren op de float-waarden en variabelen. Het volgende voorbeeld toont een eenvoudige optelling van twee float-getallen:
|
1 2 3 |
sample_float = 55.66 + 99.222 print sample_float print "\n" |
Wat als we een float en een integer optellen? De resulterende waarde is een float. In het volgende voorbeeld wordt 55.0, hoewel het een heel getal is, behandeld als een float:
|
1 2 3 |
sample_float = 55.0 + 10 print sample_float print "\n" |
Step 3 – Boolean
Booleans vertegenwoordigen de waarheidswaarden van de logische tak van de wiskunde. In Ruby worden Boolean-datatypes vertegenwoordigd door twee waarden: true en false:
-
Groter dan
-
100 > 99: true
-
99 > 100: false
-
-
Kleiner dan
-
500 < 999: true
-
999 < 500: false
-
-
Gelijk aan
-
10 == 10: true
-
9 == 99: false
-
Net als bij getallen kunnen we ook een true of false waarde in een variabele. Het volgende voorbeeld demonstreert deze functionaliteit:
|
1 2 3 |
result = 9 == 99 print result print "\n" |
Step 4 – Strings
In programmeren wordt een string weergegeven als een reeks tekens (letters, cijfers en symbolen). In Ruby staan strings tussen enkele aanhalingstekens ( ') of dubbele aanhalingstekens ( "). We hebben het gebruik van strings in Ruby al in detail behandeld, dus dit zal een kort gedeelte zijn.
The following example is a basic hello world program in Ruby:
|
1 |
print "hello world!\n" |
We kunnen strings ook in variabelen opslaan. Het volgende voorbeeld bevat ook string-concatenatie:
|
1 2 |
username = "Cloudsigma" print "hello, " + username + "!\n" |
Step 5 – Arrays
Een array is een datastructuur die een verzameling elementen van hetzelfde datatype met een vaste grootte kan opslaan. Het kan ook worden geconceptualiseerd als een verzameling variabelen van hetzelfde datatype. Het is een van de meest fundamentele datastructuren in de meeste moderne programmeertalen.
In Ruby wordt een array als volgt gedefinieerd:
|
1 |
[value_1, value_2, …, value_N] |
Het is mogelijk om een array te maken van alle andere datatypes die we tot nu toe hebben besproken (integer, float en strings). Hier zijn enkele voorbeelden:
-
Integer: [-5, 0, 5]
-
Float: [-9.99, -6.99, -3.99, 0, 3.99]
-
String: [“the”, “quick”, “brown”, “fox”]
Het volgende voorbeeld implementeert al deze typen arrays:
|
1 2 3 4 5 6 |
print [-5, 0, 5] print "\n" print [-9.99, -6.99, -3.99, 0, 3.99] print "\n" print ["the", "quick", "brown", "fox"] print "\n" |
Merk op dat wanneer de print-functie een array tegenkomt, deze de hele array op het scherm afdrukt. Voor meer gemak zul je arrays vaak als variabelen tegenkomen. Laten we de code bijwerken:
|
1 2 3 4 5 6 7 8 9 10 |
array_int = [-5, 0, 5] print array_int print "\n" array_float = [-9.99, -6.99, -3.99, 0, 3.99] print array_float print "\n" array_string = ["the", "quick", "brown", "fox"] print array_string print "\n" |
Nu kunnen we werken met individuele elementen van de arrays:
|
1 2 3 4 5 6 7 8 9 |
array_int = [-5, 0, 5] print array_int[2] print "\n" array_float = [-9.99, -6.99, -3.99, 0, 3.99] print array_float[1] print "\n" array_string = ["the", "quick", "brown", "fox"] print array_string[3] print "\n" |
Merk op dat in Ruby de indexwaarde van arrays begint met 0.
Voor het gemak worden arrays in Ruby geleverd met de .first en de .last methoden die het eerste en het laatste element afdrukken:
|
1 2 3 4 |
array_float = [-9.99, -6.99, -3.99, 0, 3.99] puts array_float.first puts array_float.last print "\n" |
In Ruby hebben arrays nog een interessante eigenschap. Ze kunnen tegelijkertijd verschillende soorten gegevens bevatten. Je kunt bijvoorbeeld strings, symbolen en zelfs andere arrays opslaan:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
mixed_array = [ "hello", 99.99, "world", [ "the", "quick", "brown", "fox" ] ] print mixed_array print "\n" print mixed_array[3] print "\n" |
Stap 6 – Symbolen
In Ruby is een symbool een speciaal datatype dat fungeert als een label of een identificator. Symbolen zijn onveranderlijk, wat betekent dat ze niet gewijzigd kunnen worden. Symbolen zien eruit alsof je variabelen declareert zonder enige waarde.
Hier is een voorbeeld van een symbool:
|
1 |
:time_zone |
Over het algemeen worden symbolen gebruikt om iets belangrijks te identificeren. Voor andere situaties zijn strings echter meer dan voldoende.
Omdat Ruby een objectgeoriënteerde taal is, behandelt het alles als een object (inclusief strings) met een unieke geheugenlocatie, zelfs als de strings identiek zijn. Wanneer je echter naar een symbool verwijst, is dit overal in het programma hetzelfde object, met dezelfde geheugenlocatie.
Stap 7 – Hashes
Een hash is een woordenboekachtige verzameling van sleutels en waarden. Vaak worden hashes gebruikt om gerelateerde gegevens op te slaan, bijvoorbeeld informatie over een gebruiker.
Hier is een snel voorbeeld van een hash. We hebben een hash gemaakt user_info die de gebruikersnaam en het wachtwoord van een gebruiker bevat:
|
1 2 3 4 5 6 |
user_info = { "username" => "HelloWorld999", "password" => "password123" } print user_info print "\n" |
Om de waarden van een sleutel-waardepaar op te halen, moeten we de sleutel gebruiken. Het volgende voorbeeld laat dit proces zien:
|
1 2 3 4 5 6 7 |
user_info = { "username" => "HelloWorld999", "password" => "password123" } print user_info["username"] print "\n" |
Ruby maakt het ook mogelijk om een hash te definiëren met een iets andere syntaxis ( : in plaats van =>):
|
1 2 3 4 5 6 |
user_info = { username: "HelloWorld999", password: "password123" } print user_info[:password] print "\n" |
Deze syntaxisstructuur is vergelijkbaar met de syntaxis die in andere talen wordt gebruikt, bijvoorbeeld JavaScript. In deze syntaxisstructuur worden de sleutels gedefinieerd als symbolen. Daarom gebruiken we, in plaats van "username", het volgende: username om toegang te krijgen tot de waarde.
Dynamische typering
Je hebt misschien al gemerkt dat we bij het declareren van een variabele niet expliciet een datatype hoeven toe te wijzen. In plaats daarvan bepaalt de waarde van de variabele het datatype. Ruby maakt gebruik van dynamische typering waarbij typecontrole tijdens runtime wordt uitgevoerd. Daarentegen worden de datatypen tijdens de compilatie bepaald in statisch getypeerde programmeertalen (bijvoorbeeld C/C++).
In het volgende voorbeeld zijn alle waarden die aan de variabele dyn_var zijn toegewezen, geldig:
|
1 2 3 4 5 |
dyn_var = 123 dyn_var = 456.789 dyn_var = true dyn_var = "the quick brown fox" dyn_var |
In dynamisch getypeerde talen staat het ons vrij om een bestaande variabele opnieuw te gebruiken om verschillende datatypen op te slaan. Hier is het vorige voorbeeld bijgewerkt om dit fenomeen te demonstreren:
|
1 2 3 4 5 6 7 |
dyn_var = 123 puts dyn_var dyn_var = 456.789 dyn_var = true dyn_var = "the quick brown fox" puts dyn_var dyn_var |
Zoals dit voorbeeld laat zien, verandert het datatype van dyn_var direct bij elke toewijzing van een nieuwe waarde. Dit is handig bij het converteren van het ene datatype naar het andere. Het volgende voorbeeld demonstreert dit:
|
1 2 3 4 |
print "enter length: " length = gets.chop length = length.to_f puts length |
Hier,
-
Omdat toetsenbordinvoer strings zijn, is length in eerste instantie een string.
-
Omdat onze gewenste waarde een float is, converteren we de stringwaarde naar een float met behulp van de to_f methode.
-
Vanwege de verandering van waarde krijgt length het datatype float toegewezen. Dit is wat we zien wanneer we de waarde op het scherm afdrukken.
Wat zou er gebeuren als we twee verschillende datatypen met elkaar proberen te mengen? Ruby zal een foutmelding geven. Neem een kijkje:
|
1 |
print 9 + "77" |
Identificatie van datatypen
In Ruby wordt alles behandeld als een object. Elk object in Ruby is voorzien van de methode class. Wanneer deze methode wordt aangeroepen, geeft deze aan wat het datatype van de bron is. Hier zijn enkele voorbeelden van het gebruik van de class methode:
|
1 2 3 4 |
puts 55.class puts (55.55).class puts true.class puts nil.class |
Een andere manier om het datatype te achterhalen is door gebruik te maken van de kind_of?-methode. Deze controleert het datatype van het object met het gevraagde datatype en retourneert een Booleaanse waarde. Bekijk het in het volgende voorbeeld:
|
1 2 |
puts 55.kind_of?(Float) puts 55.kind_of?(Integer) |
Op vergelijkbare wijze is er een andere methode is_a? die het datatype vergelijkt en een Booleaanse waarde retourneert. Het enige verschil is het label van de methode. Het kan echter de voorkeur hebben omdat het voor ontwikkelaars iets makkelijker te lezen en te begrijpen is. Werk het vorige voorbeeld bij met is_a?:
|
1 2 |
puts 55.is_a?(Float) puts 55.is_a?(Integer) |
Tot slot
Werken met een programmeertaal vereist een goed begrip van de datatypen die deze ondersteunt. In deze gids hebben we de meest voorkomende datatypen verkend die in Ruby-programmering worden gebruikt. We hebben integers, floats, strings, symbols, Booleans en hashes besproken en gedemonstreerd (met voorbeelden).
Bekijk meer handleidingen op onze blog die je helpen Ruby te ontdekken:
- Ruby on Rails installeren met RVM op Ubuntu 20.04
- Ruby on Rails instellen met PostgreSQL
- MySQL gebruiken met een Ruby on Rails-app op Ubuntu 21.04
- CloudSigma PaaS verkennen: hoe maak je gebruik van Ruby PaaS-hostingdiensten?
Veel plezier met programmeren!




































Reacties
Nog geen reacties. Wees de eerste.