ruby

Post on 20-Jun-2015

609 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Presentación de Ruby para los alumnos de Inacap, realizada el 19 de noviembre de 2011 junto al grupo 7Talks

TRANSCRIPT

RUBY@janogonzalez

http://janogonzalez.com

@janogonzalez

jano gonzález

parte de

@7talks

desarrolla apps en

continuum

escribe el blog

gemaroja.com

organiza el meetup

@dynlangchile

QUÉ ES RUBY

lenguaje

dinámico

orientado a

objetos

poderosa

metaprogramación

sintaxis

concisa

es como

perl+smalltalk

historia

まつもとゆきひろ

Yukihiro Matsumoto

Matz

24/02/1993

idea

optimizar la

felicidad del desarrollador

21/12/1995

publicación

25/12/1996

versión 1.0

15/12/2001

pickaxe

david heinemeier hansson

DHH

2005

RAILS 1.0

ruby se hizo realmente

popular

alguna implementaciones:

mri, jruby, rubinius

el lenguaje

todo es un

objeto

objetos,

objetos en todos lados

objetos

# El clásicaico string“Hola Mundo”.upcase

# No hay "tipos primitivos"!5.zero?

# Hasta el nulo es un objetonil.nil?

objetos

# Arreglos[1, 2, 3, 4, 5]

# Hashes{:jano => "Alejandro", :cote => "José"}

# Rangos(1..10)

objetos

# Expresiones regulares/^[a-z]+$/

# Lambdaslambda { |n| n * 2 }

particularidades de los

métodos

métodos

# En realidad + es un método, noun operador1.+(9)

# Con un poco de azucar sintáctico1 + 9

# En otros objetos"Hola " + "Mundo"

# Con una gran cantidad de objetos![1, 2, 3] + [4, 5]

métodos

• Paréntesis opcionales

• ?

• !

usando

arrays

usando

hashes

otros

objetos

sentencias de

control

creando

claseS

CLASES

class Persona attr_reader :nombre, :apellido

def initialize(nombre, apellido) @nombre = nombre @apellido = apellido endend

jano = Persona.new("Jano", "González")jano.nombre

clases

# Monkey patchingclass Range def even self.select { |n| n % 2 == 0 } endend

(1..100).even

usando

bloques

bloques

# Un método puede recibir un bloque de código5.times do |n| puts nend

# Para casos cortos como el anterior...5.times { |n| puts n }

bloques

# El clásico map(1..100).map { |n| n * 2 }

# El clásico select(1..100).select { |n| n % 3 == 0 }

# El clásico reduce(1..100).reduce { |sum, n| sum + n }

# Incluso más corto(1..100).reduce(:+)

gemas

miles de

componentes

gemas

$ gem list

$ gem install sinatra

para aprender

ruby koans

rubykoans.com

ruby monk

rubymonk.com

visita

gemaroja.com

top related