From Wikipedia, the free encyclopedia
Ruby er eit objektorientert programmeringsspråk. Det kombinerer syntaks inspirert av Ada og Perl med Smalltalk sine objektorienterte eigenskapar. Det deler òg eigenskapar med Python, Lisp og CLU. Det vart opphavleg utforma som eit tolka programmeringsspråk, men i si JRuby-utgåve kan det bli kompilert.
Ruby | |||
![]() | |||
Utviklar | Yukihiro Matsumoto | ||
---|---|---|---|
Utgjeve | 1995[1] | ||
Nyaste versjon | 3.3.4 (9. juli 2024)[2] | ||
Operativsystem | Microsoft Windows, Linux, BSD, macOS | ||
Skriven i | C | ||
Type | programmering, creating, analyse, webutvikling | ||
Lisens | Ruby License, GPLv2, 2-clause BSD License | ||
Nettstad | https://www.ruby-lang.org/ |
Språket vart etablert av Yukihiro "Matz" Matsumoto som starta jobben med Ruby den 24. februar 1993 og lanserte det i 1995. Namnet Ruby vart valt for å peike på arven etter Perl. I følgje forfattaren vart Ruby utforma for å følgje eit prinsipp om den minste overraskinga. Med dette meiner han at språket skal vere fri for feller og inkonsistensar som pregar andre språk. I desember 2004 var siste stabile versjon 1.8.2.
Ruby er objektorientert: Alle bitar av data er eit objekt. Dette omfattar typar andre språk ofte definerer som primitive datatypar, slik som til dømes integer. Kvar funksjon er ein metode. Alle variablar er ein referanse til eit objekt, ikkje til objektet sjølv. Ruby støttar arv og import av modular som såkalla MixIn (å endre delar av funksjonaliteten i ein klasse). Prosedyre-syntaks er inkludert, men alle slike prosedyrar skrivne utanfor ein sjølvdefinert klasse blir gjort på klassen av type Object. Sidan denne klassen er forelder til alle andre klassar, blir slike prosedyrar synlege for alle klassar og objekt.
Ruby har to hovudimplementasjonar: Den offisielle Ruby-tolkaren, som er den mest utbreidde, og JRuby, som er ein Java-basert implementasjon.
Ruby har òg vorte brukt til rammeverk for utvikling av tynne klienter for verdsveven, t.d. Ruby on rails.
Per dags dato manglar Ruby støtte for Unicode, men har delvis støtte for UTF-8.
Sjølv om Ruby er utforma etter prinsippet om den minste overraskinga er det store skilnader frå andre språk som C og Perl.
Eit grunnleggande døme:
# Alt er objekt -199.abs # 199 "ruby is cool".length # 12 "Rick".index("c") # 2 "Nice Day Isn't It?".split(//).uniq.sort.join # " '?DINaceinsty"
Eit array:
a =[1, 'hi', 3.14, 1, 2, [4, 5]] a[2] # 3.14 a.reverse # [[4, 5], 2, 1, 3.14, "hi", 1] a.flatten.uniq # [1, "hi", 3.14, 2, 4, 5]
Ein hash-tabell:
hash = {'water' => 'wet', 'fire' => 'hot'} puts hash['fire'] hash.each_pair do |key, value| puts "#{key} is #{value}" end # Skriv ut: water is wet # fire is hot hash.delete_if {|key, value| key == 'water'} # Slettar 'water' => 'wet'
To måtar å opprette ei kodeblokk:
{puts "Hello, World!"}
do puts "Hello, World!" end
Sende ei blokk som parameter (closure):
def remember &p @block =p end # Sender med ei kodeblokk som parameter og gir den eit namn remember {|name| puts "Hello, " + name + "!"} # Når tida er inne -- kall closure! @block.call("Johnny") # Prints "Hello, Johnny!"
Iterere over array og enumeratorar:
a =[1, 'hi', 3.14] a.each {|item| puts item} # Skriv ut kvart element (3..6).each {|num| puts num} # Skriv ut 1 -6.
Blokker fungerer med mange innebygde metodar:
IO.readlines('file.txt') do |line| # gjer noko med linja her. end
Kvadrere 1 til 10:
(1..10).collect {|x| x*x} => [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Følgjande kode definerer klassen Person. I tillegg til ’initialize’, den vanlege konstruktøren, har klassen to metodar: Ein for å overstyre <=>-operatoren for å sortere etter alder. Den andre overstyre to_s
for å få korrekt formatering.
class Person def initialize(name, age) @name, @age = name, age end def <=>(person) @age <=> person.age end def to_s "#{@name} (#{@age})" end attr_reader :name, :age end group = [ Person.new("John", 20), Person.new("Markus", 63), Person.new("Ash", 16) ] puts group.sort.reverse
Koden over skriv ut ei liste sortert med den eldste først:
Markus (63) John (20) Ash (16)
puts "Hello World!"
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.