Har under en månad lite av och till kodat i Ruby. Tänkte dela med mig av några inledande kodexempel för att komma igång.
För att koda, på en Mac, är Aptana Studio alldeles utmärkt som utvecklingsmiljö. Liknar Eclipse på många sätt. Självklart går det alldeles utmärkt med valfri textredigerare, exempelvis Notepad++ på Windows. Kör du Windows så följer inte Ruby med i installationen, men det går att ladda ner på www.ruby-lang.org
Kodexempel 1 - Hello world
puts "Hello World!" #skriver ut texten
Kodexempel 2 - iteration
3.times { print "Eee " } # skriver ut en sträng 3 gånger print "\n" # radbryt 1.upto(8) { |x| print x } # skriver ut 12345678 print "\n" # radbryt
Kodexempel 3 - array och iteration
a = [ 3, 2, 1 ] # array a.each do |elt| # itererar alla poster av arrayen "a" print elt+1 # skriver ut "432" end # avslutar iterationen, skulle gått även med {}
Kodexempel 4 - conditional operator
x = 4; y = 7;
max = x > y ? x : y # kollar vilken variabel som har störst värde print max # skriver ut "max"
Kodexempel 5 - metoder
def square(x) # definierar metoden "square" x*x # returnerar x i kvadrat end # avslutar metoden
print square(5) # skriver ut resultatet av 10*10 via metoden "square"
Kodexempel 6 - tilldelning
x = 1 # sätter variabeln "x" till "1" x += 1 # ökar värdet av variabeln "x" med "1", x++ existerar inte print x # skriver ut "x" print "\n" # radbryt
x -= 1 # minskar värdet av "x" med 1 print x # skriver ut "x" print "\n" # radbryt
x, y = 1, 2 # sätter "x" till 1 och "y" till 2 x, y = y, x # skiftar värdet mellan variablerna "x" och "y"
Kodexempel 7 - parallel assignment
def minMetod(x,y) # metod med två variabler som indata z = x + 7 # sätter "z" till "x" plus 7 w = y + 9.34 # sätter "w" till "y" plus 9.34 [z, w] # specar värdena som returneras end # avslutar metoden
sätter "val1" och "val2" till det som "minMetod()" returnerar
val1, val2 = minMetod(9, 12)
print val1 print "\n" print val2 print "\n"
Kodexempel 8 - regular expression
textAttKolla = "ruby" # sträng att köra reguljärt uttryck på
val = case textAttKolla when /[Rr]uby/: "TJO" # matchar antingen "ruby" eller "Ruby" when /simhall/: "TJO 2" else nil end
print val # skriver ut "val" print "\n"
Kodexempel 9 - schemaläggning och timer
t = Thread.new do # skapar en ny tråd while true do # loopar p 'perform task' # skriver ut meddelande sleep 25 # säger åt tråden att vila i 25 sekunder end end
t.join # väntar på att tråden ska stanna, vilket den inte gör i detta kodexempel
Kodexempel 10 - JSON
require 'rubygems' require 'json' require 'net/http'
def api_search(url) resp = Net::HTTP.get_response(URI.parse(url)) data = resp.body
print url print "\n"
# konverterar den returnerade JSON till Ruby # datastruktur blir en hash result = JSON.parse(data)
# om 'Error' ingår i resultatet kastas ett fel if result.has_key? 'Error' raise "web service error" end return result end
res = api_search('http://gray.orebro.se/epospunktinfo/GetLayers.aspx?layerId=2&format=json')
res.each do|name,val| puts "#{name}: #{val}"
val.each do|name2,val2| puts "#{name2}: #{val2}" end end
Kodexempel 11 - kommentarer och dokumentation
# hela denna raden är en kommentar
k = "# här blir det en sträng" # och här kommer kommentaren r = /#reguljärt uttryck/ # och en kommentar
flera
rader
med
kommentarer
=begin Allt mellan dessa uttryck är inbäddad dokumentation. Användbart bland annat när man vill kommentera bort hela stycken med kod eller bädda in exempelkod från annat språk. =end
Rdoc är kommentarer som kan hämtas ut som dokumentation
och kan visas med "ri", inte helt olikt wiki-kodning
= huvudrubrik
== underrubrik
här kommer lite innehåll om "underrubrik"
= ny huvudrubrik
p k # skriver ut variabeln "k"
Det kommer säkert mer exempel allt eftersom jag kodar vidare :)