Next Previous Contents

5. Ting vi nesten glemte...

5.1 Exceptions: Feil og unntak. Når ting går galt.

For all sin glitrende magi, kan ikke Ruby beskytte deg fra å gjøre feil og heller ikke fra alt som kan gå galt.

  1| $livvakter = true
  2| 
  3| def hent_kongen
  4|   if $livvakter
  5|     puts "Kanskje kommer Kongen..."
  6|   else
  7|     raise SecurityError, "Redd for bløtekake."
  8|   end
  9| end
 10| 
 11| begin
 12|   hent_kongen #=> "Kanskje kommer Kongen..."
 13|   $livvakter = false
 14|   hent_kongen #=> "Niks: Redd for bløtekake."
 15| rescue SecurityError => error
 16|   puts "Niks: #{error}"
 17| end

5.2 Regulære uttrykk

Regulære uttrykk (regular expressions) er en gjenganger blant skriptingsspråkene som gjør dem så perfekte til tekst-manipulering.

Klassen Regexp samler denne funksjonaliteten på en ryddig måte, men Ruby lar deg også bruke regexp literaler.

  1| # Litt HTML tekst å lete i
  2| html = '<UL>
  3| <LI><IMG SRC="next.gif"></LI>
  4| <LI><A HREF="index.html">Hei</A></LI>
  5| </UL>'
  6| 
  7| # Den ryddige måten å lage Regexp'er på:
  8| r1 = Regexp.new( '<IMG SRC=".*">' )
  9| puts r1.match( html ).to_s #=> '<IMG SRC="next.gif">'
 10| 
 11| # Regexp-literaler
 12| r2 = /<A HREF=".*">.*<\/A>/ # slash må escapes
 13| puts r2.match( html ).to_s #=> '<A HREF="index.html">Hei</A>'
 14| 
 15| # String-klassen har også en del metoder som tar imot
 16| # ett Regexp-objekt, deriblant sub og gsub
 17| antall_e = 0
 18| "Hvor mange e'er er det i denne setningen?".scan(/e/){ |match|
 19|   antall_e += 1
 20| }
 21| puts "Totalt #{antall_e} e'er." #=> Totalt 9 e'er.

Regulære uttrykk er nesten en vitenskap i seg selv. Dessuten er de omtrent like lesbare som det norske lovverket etter å ha gått igjennom en makuleringsmaskin og bør derfor brukes med omhu.


Next Previous Contents