User Tools

Site Tools


linuxbog:program:sprog-ruby
Linux – Friheden til at programmere: Version 2.5.20050330 – 2020-12-31
forrige Kapitel 2. Vælg et sprog næste

2.29. Ruby

Ruby tilhører, sammen med Perl og Python, gruppen af moderne fortolkede

sprog. Fra begyndelsen er Ruby designet som et objektorienteret sprog
og giver derfor en mere elegant oplevelse end Perls objekter, men
derudover minder Ruby langt hen af vejen om en pænere version af
Perl.

Ruby er hovedsagligt udviklet i Japan og meget af dokumentationen er

skrevet på japansk. Denne mangel på engelsk dokumentation har været
en hindring for Rubys internationale udbredelse. Dette er der ved at
blive rådet bod på, det kan derfor kun anbefales at se nærmere på
Ruby.

2.29.1. Hej verden!

Vi begynder med det sædvanlige eksempel. Et lille program der ikke gør

andet end at skrive "Hello World!" ud på skærmen. Det giver ikke meget
indtryk af selve sproget Ruby, men viser hvordan man bruger det. Gem
følgende tekst somhello.rb
#!/usr/bin/ruby

print "Hello World!\n"

Programmet kan nu køres ved enten at kalde ruby :

linus%ruby hello.rbHello World!linux%

eller ved at gøre scriptet udførbart og køre det direkte:

linux%chmod a+x hello.rblinux%./hello.rb
Hello World!linux%

2.29.2. Et større eksempel

For at vise et lidt større eksempel som giver en lidt større indsigt i

hvordan Ruby ser ud er her et simpelt program til afsendelse af email.
Programmet er ret simpelt. Det beder om en afsender, en modtager og et
emne. Derefter kan man skrive sin mail.

I sin fulde længde ser programmet således ud:

#! /usr/bin/ruby

require 'net/smtp'

mail = ""

begin
  print "From: "
  from = readline
  mail << "From: " << from
  from.chomp!
  print "To: "
  to = readline
  mail << "To: " << to
  to.chomp!
  print "Subject: "
  mail << "Subject: " << readline
rescue EOFError
  print "\nAborted\n"
  exit 1
end

mail << "\n"

print "Write mail end with . or EOF\n"
begin
    line = readline
    break if (line == ".\n")
    mail << line
rescue EOFError
    break
end while true

smtp = Net::SMTP::new("localhost")
smtp.start
smtp.sendmail(mail, from, to)
smtp.finish

Den første linje

require 'net/smtp'

Fortæller at vi har brug for biblioteket der implementerer SMTP så vi

kan sende mail.

Selvom Ruby er utypet, så skal vi have et objekt for at kunne lave

metodekald. Derfor bliver vi nødt til at initialiserer variablen mail
med et streng-objekt:
mail = String::new("")

Det næste vi skal gøre er at spørge brugeren om afsenderen, modtageren

og emnet for mailen. Hvis brugeren trykker Ctrl-D (End Of File) skal
programmet stoppe:
begin
  print "From: "
  from = readline
  mail << "From: " << from
  from.chomp
  print "To: "
  to = readline
  mail << "To: " << to
  to.chomp
  print "Subject: "
  mail << "Subject: " << readline
rescue EOFError
  print "\nAborted\n"
  exit 1
end

mail << "\n"

readline læser en linje fra standard-ind. Hvis

brugeren sender en EOF (trykker Ctrl-D) rejses end EOFError-undtagelse,
der derfor fanges tilsidst i blokken (fra **rescue
EOFError** ).

« er en metode på et streng-objekt. Den tilføjer en streng til

objektet. **chomp** -metoden fjerner ny linje-tegnet
sidste fra en streng.

Så skal vi læse selve mailen ind. Dette gøres i en

uendelig **while** -løkke:
print "Write mail end with . or EOF\n"
begin
  line = readline
  break if (line == ".\n")
  mail << line
rescue EOFError
  break
end while true

Hvis brugeren sender en EOF hopper vi ud af løkken i rescue-blokken

og hvis brugeren skriver en linje kun indenholdende et punktum hopper
vi også ud af løkken.

Tilbage er bare at sende mailen:

smtp = Net::SMTP::new("localhost")
smtp.start
smtp.sendmail(mail, from, to)
smtp.finish

Vi laver et smtp-objekt og sender mailen med sendmail -metoden

2.29.3. One-liners i Ruby

ruby understøtter en række argumenter der gør det

lettere at skrive one-liners, altså små programmer der kan skrives på
en linje. Disse argumenter kendes også fra perl

forrige hjem næste
Python op Scheme
linuxbog/program/sprog-ruby.txt · Last modified: by 127.0.0.1

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki

Brug af AI : Al tekst kán være uddrag af AI genereret tekst og kan være fejlbehæftet.
AI kan lave fejl og det kan mennesker også, men al tekst er gennemgået af et menneske for fejl, og personlig bias kan være tilføjet.