Ruby: a Programmer's best friend
-
Upload
flekoso -
Category
Technology
-
view
1.320 -
download
0
description
Transcript of Ruby: a Programmer's best friend
Los ideales del creador de Ruby
Yukhiro “matz” MatsumotoMezcla:
PerlSmalltalkEiffelAdaLisp
Ruby como un lenguaje natural, no simple
Los ideales del creador de Ruby
Ruby es totalmente libre. No sólo gratis, sino también libre para usarlo, copiarlo, modificarlo y distribuirlo.
Historia
Iniciado en 1993. Liberado al público en 1995. Version 1.0 a fines de 1996.Reconocimiento masivo en 2006. Version actual 1.9.x
Caracteristicas
Interpretado.Portable. Dinamico. Orientado a objetos.Flexible (abierto).Mixines.Manejo de excepciones.
Instalación / como empezar
Interprete irbArchivos con extension .rbBinario rubyEjecutando:
ruby programa.rbLIbrerias (gemas)
gem install <nombre>
Orientado a objetos
"Todo es un objeto"
5.times { print "Hola mundo" }
Clases
Integer, Fixnum, Bignum, Float, ...String Array
dias = Array.newdias.empty? => truedias = Array.new(7, "today")dias = [ "L", "M", "M", "J", "V", "S", "D" ]Union, interseccion, diferencia
DateDateTimeTime
Clases
Ranges r = (1..10) # de 1 a 10 inclusive r = (1...10) # de 1 to 9 r === 4 # => true ('k'..'z') === 'm' # => true
Hashh = {'uno' => 1, 'dos' => 2}h['uno'] # => 1h['tres'] = 3
Simbolos
Es el elemento mas basico que se puede crear en ruby.Sintaxis:
:simboloDiferencia con String
puts "hola".object_id # 21066960puts "hola".object_id # 21066730puts :hola.object_id # 132178puts :hola.object_id # 132178
Particularmente utiles para claves en Hash persona[:nombre] = 'Pedro'
Clases
class Saludo def initialize( quien ) @quien = quien auxiliar = "local" @@variable_de_clase = "prueba" end
def deci_hola "Hola #{@quien}!" endend
unSaludo = Saludo.new("Lucas")unSaludo.deci_hola# Hola Lucas!
Abierto
class Integer def sumar(x) self + x endend
y = 5.sumar 6# ahora y vale 11
Herencia - Mixins - Modulos
class Perro < Animalend class MiArreglo include Enumerable end
Herencia simpleModulos que se "mezclan"
Colecciones de metodosEjemplo: implementando each y/o <=> puedo mezclar Enumerable
min, max, sort, include?, ....
Verdades
En Ruby, todo excepto nil y false es considerado true.
if 0 trueelse falseend# => true
Iteradores
Cada objeto debe saber como "iterarse"
# numeros = [1,2,3,4,5,6,7,8, 9,10] numeros = (1..10).to_a
numeros.each do |n| puts nend pares = numeros.select do |n| n % 2 == 0end
Iteradores
Iteraciones estilo ruby
5.times do puts "hola"end 5.upto(10) do |index| puts "hola #{index}"end
15.downto(10) do puts "hola"end
Manejo de excepciones
begin sum / 0rescue ZeroDivisionError => e puts "Error: #{sum} / 0"ensure end
Quedaron afuera...
Bloques.Expresiones regularesYAMLReflection
Sugerencias
Tests, tests, tests.Manejo de versiones "desprolijo"
Desarrollo de aplicaciones
Aplicaciones de escritorio Ruby Tk Ruby-gnome2 (ruby-gnome2.sourceforge.jp/)Ruby + Swing (java)Ruby / QtWxRubyFxRuby
Aplicaciones webRuby on Rails
IDENetbeansAptana (Eclipse plugin)
Ejemplos
Twitter (http://www.twitter.com/)Github (http://www.github.com/)Justin.tv (http://www.justin.tv/)SUSE Studio (http://susestudio.com) Watir (http://rubyforge.org/projects/wtr/)