[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