+54 911 66509220

Noticias

Noticias
5 Abr 2015

Tutorial de Ruby – Parte 39 – Organización del código

/
Creado por
/
Comentarios0

El intérprete de Ruby procesa el código conforme lo lee. No existe nada semejante a una fase de compilación; si algo no se ha leído todavía, sencillamente está sin definir.

 

# Este código da lugar al error “undefined method”:

 

print successor(3),”\n”

 

def successor(x)

x + 1

wend

 

Como cabría esperar a primera vista esto no fuerza a que se deba organizar el código de un modo estrictamente bottom-up. Cuando el intérprete encuentra la definición de un método puede incluir con seguridad referencias no definidas, siempre y cuando se asegure que se definirán antes de llamar realmente al método:

 

# Conversión de fahrenheit a celsius, dividida en dos pasos

 

def f_to_c(f)

scale (f – 32.0) # Referencia adelantada, pero es correcto

end

 

def scale(x)

x * 5.0 / 9.0

end

 

printf “%.1f es una temperatura agradable.\n”,f_to_c( 72.3 )

 

Aunque pueda parecer un poco menos adecuado que lo que se suele usar en Perl o Java, es menos restrictivo que intentar escribir código C sin prototipos (lo que obliga a mantener siempre una ordenación parcial de quién referencia a quién). Poner el código de más alto nivel al final del fichero, funciona siempre. Y esto no es una gran molestia aunque a primera vista lo pudiese parecer. Una forma sensata e indolora de conseguir el comportamiento que se desea es definir una función main al principio del fichero y llamarla al final.

 

#!/usr/bin/ruby

 

def main

# Aquí el código de nivel superior

end

 

# … Todo el código de apoyo aquí, organizado como se crea más adecuado …

main # … y se inicia la ejecución aquí.

 

También sirve de ayuda que Ruby proporcione herramientas para dividir programas complicados en bloques legibles, reutilizables, y relacionados lógicamente. Se ha visto la utilización de include para acceder a módulos. Pero también pueden ser útiles load y require. load funciona como si el fichero al que referencia fuese copiado y pegado (algo

parecido a la directiva #include del preprocesador C). require es un poco más sofisticada, carga el código como mucho sólo una vez y cuando se necesite. Existen otras diferencias entre load y require; para más información se puede acudir el manual del lenguaje o a la FAQ.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

* Copy This Password *

* Type Or Paste Password Here *

10.993 Spam Comments Blocked so far by Spam Free Wordpress

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>