[Ror-es] private static final

Sebastian Delmont
Tue Feb 28 01:56:50 GMT 2006


Eso es lo que se conoce en Ruby como una constante. Suelen tener el  
nombre en mayusculas, y simplemente la declaras en la clase:

class Link ...
     URL_REGEXP = %r{http\:\//[\w\d\-\.]+\....}
     def self.get_hash(url)
         raise "No es un url" unless url =~ URL_REGEXP
         Digest::SHA1.hexdigest "mi semilla #{url}"
     end
end


Pero mi recomendacion es que no te preocupes tanto por optimizaciones  
de ese tipo. En el 99% de los casos, no son necesarias pues no estan  
en los puntos criticos de la aplicacion, y el 1% restante solo lo  
puedes descubrir cuando hayas terminado la aplicacion y sepas cuales  
son realmente los puntos criticos.

PS: Me tome la libertad de aprovechar tu ejemplo para demostrar  
algunos rubismos.

On Feb 25, 2006, at 2:59 PM, Carlos Kozuszko wrote:

>
> Quiero lograr el mismo efecto que se logra al definir una variable  
> con los
> modificadores "private static final" en Java. Es decir, que el  
> valor de la
> variable se asigne sólo una vez al cargar la clase y no al crear cada
> instancia de la misma.
> Les pongo un ejemplo:
>
> class Link < ActiveRecord::Base
>   ## Devuelve el hash para la url
>   def self.get_hash(url)
>     raise Exception unless url && Regexp.new('http\://[a-zA-Z0-9\- 
> \.]+\.
> [a-zA-Z]{2,3}(/\S*)?').match(url)
>     seed = 'mi semilla'
>     return Digest::SHA1.hexdigest(seed + url)
>   end
> end
>
> Yo quiero evitar que la Regexp que utilizo se cree cada vez que se  
> ejecuta el
> método get_hash. Quiero crear una variable estática que se  
> inicialice una
> sólo vez. Tal vez en este ejemplo la recarga de inicializar una  
> expresión
> regular por cada llamada no es tanta, pero tal vez en otras tareas esa
> inicialización sea más pesada, es por eso que quiero aprender como  
> hacerla.
>
> Mis conocimientos son más de Rails en general que de Ruby en  
> particular.
>
> Muchas gracias!
>
> -- 
> Web Site: http://www.ckozus.com.ar
> Blog: http://www.ckozus.com.ar/blog
> Mis links: http://del.icio.us/ckozus
> _______________________________________________
> Ror-es mailing list
> 
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2353 bytes
Desc: not available
Url : http://barclay.textdrive.com/pipermail/ror-es/attachments/20060228/df00aa66/smime.bin