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 |
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.