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

Responder a