BTW, esto da para otro thread :) Y da para otro momento que tenga un poco más de tiempo de escribir, no quiero sonar pedante, simplemente que tengo que terminar algo medio apurado :(
Saludos, -f 2011/4/20 Nicolás Sanguinetti <[email protected]>: > protected no es lo que vos pensás (o serías la 5a persona que me > contesta correctamente la pregunta "cuál es la diferencia entre > protected y private en ruby", que mucho me divierte hacer cuando > entrevisto gente :P). private… es *parecido* a lo que normalmente se > conoce como protected. > > El tema es que la semántica de cómo se definen private y protected en > ruby no tiene nada que ver con como se definen en otros lenguajes. > > 2011/4/20 Tute <[email protected]>: >> Señor Foca, >> >> Algo me hace ruido de lo que dijo. La parte de que Ruby no tiene protected y >> private. Tener tiene. Usarse en el caso de protected creo que es raro porque >> Ruby no parece apuntar a heredar clases y private, bueno, de esos si hay. ¿ >> A qué se referia, señor foca? >> >> On 04/20/2011 04:44 PM, Nicolás Sanguinetti wrote: >>> >>> Primero que nada: acaban de morir varios gatitos inocentes por la >>> atrocidad esa de nombrar clases Pescado y Delfín, en lugar de Fish y >>> Dolphin. Ruby está en inglés, así que a menos que escribas "si >>> condición;<código>; fin" (que no conozco ningún interprete de ruby >>> que te deje), el código deberías escribirlo de forma consistente :) >>> >>> Segundo, el Deflín no es un pescado, es un mamífero ¬¬ >>> >>> Ahora, hablando en serio: ruby no es java/c#/c++/el lenguaje OOP que >>> te guste y con el que estés familiarizado. No tiene clases abstractas. >>> Sí, hay algunos hacks que podés hacer para que "parezcan" abstractas, >>> pero siguen sin serlo. Y son el tipo de hacks por los cuales yo >>> despediría gente (afortunadamente, no tengo a nadie a mi cargo para >>> despedir, sino con lo quisquilloso que soy estaría más sólo que el uno >>> :P). >>> >>> La forma "ActiveRecordense" de hacer lo que querés es usar Single >>> Table Inheritance, como ya te lo han recomendado. Definís una clase >>> Fish (:P), y de ella heredan Shark, Goldfish, Tuna, y todos los >>> pescados que quieras. En tus controllers, vos manejás las subclases, y >>> no tocás la clase padre (a menos que quieras crear algo genérico, o >>> usarlo tipo Factory para crear objetos de acuerdo al input de un >>> usuario—por ejemplo, el usuario en un<select> elige qué clase de >>> pescado pescó hoy, y vos creás el adecuado en la base). >>> >>> Listo, no hay "abstract classes", no hay "final classes", y no hay >>> métodos "protected" en ruby (ni privados, pero bueno, eso es para otro >>> thread). No traten de hacer magia para hacer que ruby se parezca a >>> <inserte lenguaje de programación aquí> >>> >>> Abrazo, >>> -foca >>> >>> 2011/4/20 Paolo Loran<[email protected]>: >>>> >>>> Mil gracias, ahora me quedo todo mas claro. >>>> Lo voy a probar y cualquier cosa que me frene, les consulto. >>>> >>>> Saludos. >>>> poli >>>> >>>> 2011/4/20 Lucas Tolchinsky<[email protected]> >>>>> >>>>> En el ejemplo de Roberto, cuando vos hacés Delfin.create, estarías >>>>> creando >>>>> un registro en la tabla Pescados cuyo type sería 'Delfin'. En resúmen, >>>>> vos >>>>> sólo tenés una tabla, Pescados con una columna type que indica a qué >>>>> clase >>>>> concreta pertenece. El esquema sería: >>>>> class Pescado< ActiveRecord::Base >>>>> class Delfin< Pescado >>>>> Adjunto de paso un link sobre cómo implementar clases abstractas en ruby >>>>> >>>>> http://stackoverflow.com/questions/512466/how-to-implement-an-abstract-class-in-ruby >>>>> >>>>> Saludos! >>>>> Tonchis >>>>> >>>>> PD: el delfín es un mamífero :D >>>>> >>>>> _______________________________________________ >>>>> Ruby mailing list >>>>> [email protected] >>>>> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar >>>>> >>>> >>>> _______________________________________________ >>>> Ruby mailing list >>>> [email protected] >>>> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar >>>> >>>> >>> _______________________________________________ >>> Ruby mailing list >>> [email protected] >>> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar >> >> _______________________________________________ >> Ruby mailing list >> [email protected] >> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar >> > _______________________________________________ Ruby mailing list [email protected] http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
