#!/usr/bin/env ruby # This code comes from http://ruby-it.org/pages/Ruby+For+Javanese # Check the page for copyright notice and explanations a= 10 # tipi non dichiarati esplicitamente b= 20 c= a+b a= "10" b= 20 c= a+b # errore! irb(main):001:0> puts(self) main => nil irb(main):002:0> puts self main => nil >> if 5 > 6 >> puts "incredibile, cinque maggiore di sei!" >> end => nil >> if 6 > 5 >> puts "ah, ok, sei maggiore di cinque.." >> end ah, ok, sei maggiore di cinque.. => nil >> puts 'ok' if true ok => nil >> puts 'il mondo funziona ancora' unless true == false il mondo funziona ancora => nil >> 5 > 6 ? 'maggiore' : 'minore' => "minore" >> x=0 => 0 >> while x < 5 >> puts x >> x+=1 >> end 0 1 2 3 4 => nil >> while true >> case gets.chomp # gets legge una stringa da input, chomp toglie lo \n >> when 'ciao' >> puts "ciao a te" >> when 'addio' >> puts "a presto" >> end >> end ciao ciao a te addio a presto >> /^c/ === 'ciao' # /^c/ e' una Regexp, === significa "corrisponde alla Regexp" => true >> String === 'ciao' # String e' una Classe, === significa "istanza della Classe" => true >> (1..10) === 5 # 1..10 e' un oggetto Range, === significa "nel Range" => true >> for i in 1..10 >> print i >> end 12345678910=> 1..10 >> a=[1,20,3,40,5] # un Array puo' essere definito [elemento,elemento] => [1, 20, 3, 40, 5] >> a.each do |elemento| # tra le | si mettono i nomi degli argomenti passati ?> puts elemento >> end 1 20 3 40 5 => [1, 20, 3, 40, 5] connessione_a_database.transazione do #inizio transazione ..esegui inserimento.. ..esegui cancellazione.. end # commit o rollback >> a => [1, 20, 3, 40, 5] >> a.sort # metodo builtin, paragona il semplice valore => [1, 3, 5, 20, 40] >> a.sort_by {|elem| elem % 19 } # ordina basandosi sul valore di ritorno del blocco => [1, 20, 40, 3, 5] >>persone.sort_by {|pers| pers.cognome, pers.nome} => [ "Bianchi Mario", "Bianchi Ugo", "Rossi Ada"] >> def met (arg1,arg2) >> puts arg1,arg2 >> end > def met arg1, arg2 >> puts arg1,arg2 >> end >> def met( *args) >> puts args.class >> puts args >> end => nil irb(main):041:0> met 1, 2 ,3 ,4 ,5 Array 1 2 3 4 5 => nil >> def stampa_persona( nome='mario', cognome='rossi') >> print "il signor " + nome + " " + cognome >> print "\n" >> end => nil >> stampa_persona 'franco', 'bianchi' il signor franco bianchi => nil >> stampa_persona 'franco' il signor franco rossi => nil >> stampa_persona il signor mario rossi => nil >> def due >> yield 1 >> yield 2 >> end => nil >> due {|x| p x } 1 2 >> due LocalJumpError: no block given from (irb):26:in `due' from (irb):30 from ♥:0 >> 5.is_a? Numeric => true >> String.respond_to? '+' => false >> "String".respond_to? '+' => true >> "ciao".class.ancestors => [String, Enumerable, Comparable, Object, Kernel] >> 5.class.superclass => Integer >> a=[1,2,23,434,1,23,3,123] => [1, 2, 23, 434, 1, 23, 3, 123] >> a.sort => [1, 1, 2, 3, 23, 23, 123, 434] >> a => [1, 2, 23, 434, 1, 23, 3, 123] >> a.sort! => [1, 1, 2, 3, 23, 23, 123, 434] >> a => [1, 1, 2, 3, 23, 23, 123, 434] irb(main):003:0> class Foo irb(main):004:1> end => nil irb(main):005:0> class foo irb(main):006:1> end SyntaxError: compile error (irb):5: class/module name must be CONSTANT from (irb):6 irb(main):007:0> miao=Foo => Foo irb(main):008:0> miao.class => Class irb(main):009:0> a='ciao' => "ciao" irb(main):010:0> a.class => String irb(main):011:0> 5.class => Fixnum irb(main):012:0> 'ciao'+5 TypeError: cannot convert Fixnum into String from (irb):12:in `+' from (irb):12