uso práctico para undef [duplicado]
Pregunta
Duplicar posibles:
undef - ¿Por qué quieres quitar la definición de un método en ruby?
¿Alguien puede diseñar un uso práctico para undef en Ruby? Vengo de lenguajes como Javascript y Python que no lo tienen construido en Usted podría por supuesto de simularlo en un lenguaje como javascript:.
var obj = { func:function(){alert("works")} }
obj.func() // -> "works"
delete(obj["func"])
obj.func() //->obj.func() is not a function
, pero en realidad nunca he tenido un uso para eso. ¿Hay algunas situaciones comunes en undef es realmente útil?
Editar - Sólo se encontró con esto en el libro "The Ruby Lenguaje de programación":
Otra técnica para evitar la copia de los objetos es utilizar simplemente no def eliminar el clon y los métodos de DUP. Todavía Otro enfoque consiste en redefinir el métodos clon y DUP para que lanzar una excepción con un error mensaje que dice que específicamente No se permiten copias. Tal mensaje de error podría ser útil programadores que usan su clase.
Solución
Yo sólo puedo decir que nunca he tenido un uso para él en 5 años. Tal vez lo más útil, grepping través de toda la fuente de carriles muestra sólo 7 casos, y todos son de programación meta relacionados. (Undef_method tiene lugar más instancias a 22). Parece ser útil para probar el comportamiento de las clases con y sin módulos mezclados-in.
Esperemos que alguien puede señalar algunos de los usos más convencionales para ello.
Editar Ver esta pregunta anterior: undef - ¿Por qué le quiere quitar la definición de un método en el rubí?
Otros consejos
El bloqueo de una clase hija de llamar a un método definido en la superclase (esto se utiliza realmente en setup.rb
del mestizo) (parafraseando):
class Item
def set
do_something
end
end
class ExecItem < Item
undef set
end
Aunque supongo undef_method
tendría el mismo efecto.