Ruby lar deg ikke få tak i et objekts attributter (felter, dataverdier, instansvariable) direkte. Alle attributter er "private". Enhver tilgang går via metodekall, såkalte get/set metoder.
1| # Vi vil bruke Person-klassen videre 2| require 'klasse1.rb' 3| 4| # Klasser er "åpne" skop, og kan enkelt utvides. 5| class Person 6| # Ruby tillater deg ikke å få tak i attributtene 7| # fra utsiden av objektet. Du må gå via metodekall. 8| 9| # get-metode 10| def alder 11| @alder 12| end 13| # set-metode 14| def alder=( ny_alder ) 15| @alder = ny_alder 16| end 17| 18| # tungvint? Jepp, så Ruby har en snarvei: 19| attr_accessor :alder # definerer metodene over automatisk 20| 21| # Vi vil også gjerne kunne lese navnene til personen 22| attr_reader :etternavn, :fornavn 23| 24| end 25| 26| if __FILE__ == $0 # Kun når vi kjører denne filen: 27| p = Person.new( "Nordmann", "Baby" ) 28| p.alder = 3 # Vi setter alderen 29| puts p.alder #=> 3 30| p.alder += 1 # Øk alderen med et år 31| puts p.alder #=> 4 32| puts p.fornavn #=> "Baby" 33| end |
Disse er symboler. (instanser av Symbol-klassen) De ligner litt på String, men kan ikke endres, de er "internert" og begrenser seg til lovlige navn på klasser, metoder, variabler o.l. (Symbolet for instans-variabelen @alder, metoden alder og den lokale variabelen alder er alle sammen :alder.)
Dette er metoder i Module-klassen som lager get/set metoder for deg. Som argument tar de symbolene til attributtene du vil lage get/set metoder for.