Ero sivun ”Ruby” versioiden välillä
[katsottu versio] | [katsottu versio] |
Poistettu sisältö Lisätty sisältö
Rivi 48:
Kielen kaikki elementit ovat objekteja, myös funktiot ja numerot. Esimerkki:
<source lang="ruby">
1.class # => Fixnum: numero 1 on olioluokan Fixnum instanssi
7.times do
Rivi 53 ⟶ 54:
end
# tulostaa seitsemän +-merkkiä.
</source>
Lohkot ovat Rubyssa tärkeä käsite. Niiden avulla toteutetaan muun muassa iteraatio, ja ne ovat hyvin käteviä luotaessa takaisinkutsumetodeja. Lohko voidaan määritellä joko symbolien { } avulla tai do ... end -rakenteella:
<source lang="ruby">
[ 3, 1, 7, 0 ].sort.reverse.each do |i|
print i*i
end
# tulostaa "49910"
</source>
Yllä olevassa lista ensin järjestetään ja käännetään ja lopuksi arvot sijoitetaan yksi kerrallaan i:hin ja suoritetaan print i*i.
Jokainen Rubyn metodi käsittää implisiittisenä parametrina lohkon, jota käyttäjä voi kutsua metodin sisällä yield-lauseen avulla. Esimerkiksi seuraava lohko suoritetaan kolme kertaa:
<source lang="ruby">
def kolme_kertaa
yield
Rivi 70 ⟶ 75:
print "Heippa"
end
</source>
Monet asiat Rubyssa näyttävät tavanomaiselta ohjelmointikieleltä, mutta todellinen implementaatio vaatii niiden muuttamista oliomallin mukaiseksi sisäisesti (usein ohjelmointikielissä tätä kutsutaan syntaktiseksi sokeroinniksi). Esimerkiksi "1+1" on vain merkintä olion "1" metodikutsulle "+" argumenttina toinen olio "1". Sama pätee Rubyssa moneen asiaan, mikä voi jättää aloittelijalle hieman sekavan kuvan kielestä.
|