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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top