Una pequeña chuleta de Ruby, con cosas previsibles y otras más interesantes….
a = if a<0  a * -1 else  a a = a<0 ? a * -1 : a a= a * -1 unless a>=0variable = '' if variable.nil? variable = '' unless variable variable ||= '' # Patrones case palabra when /[a-z].*/ then "minusculas" when /[A-Z].*/ then "mayusculas" else "otro" end # Patron "insensible al caso" print "Coinciden!" if /ABC/i =~ "1abc2"nombre_variable @atributo  NombreClase # hash table colores = { "rojo" => 0, "verde" => 1, "azul" => 2} colores["verde"] # Cadenas print "123456" [0..2] # "123" print "Azul #{colores["azul"]}" print %q{"Muchas '"comillas' '" escapadas"" :-)} # q => escape total, Q => interpreta bloques #{} print %Q{"Estamos en #{Time.now.year}"}while vs. until
array.each {|element| print element} colores.each {|clave,valor| ... } colores.map { |c| c[0].upcase } # ["ROJO", "VERDE", "AZUL"] Â # numero de parametros variable, parametros por defecto def funcion (param1, param2=0, *otros) otros.each { |p| ... } end # bloques def traza(mensaje) $stderr.puts("#{Time.now} - comienzo #{mensaje}") $stderr.puts(yield) Â $stderr.puts("#{Time.now} - fin #{mensaje}") enddef traza(mensaje, &bloque) $stderr.puts("#{Time.now} - comienzo #{mensaje}") $stderr.puts(bloque.call) Â $stderr.puts("#{Time.now} - fin #{mensaje}") endtraza('suma') { 2 + 2 }at_exit do { puts "Fin" }
set_trace_func proc { |evento, fichero, linea, id, vinculo , clase| puts "#{evento} en #{fichero}:#{linea} #{id} #{clase}" } print "Test" File.open("fichero") do |f| f.puts("123") end # Otra forma sencilla de rastrear un script es usar el "Tracer" de la biblioteca estándar:ruby -rtracer script.rb class A < B def m1 end def m2 end private # a partir de private, los metodos son privados def m3 end endBuenas prácticas:
- Usar dos espacios en vez de tabuladores
- ClasesCamello, serpientes_para_el_resto, INCLUIDAS_CONSTANTES