tag son que pagina niveles múltiples los las insertar gestionar etiquetas etiqueta entre diferencia cómo cuales categorías categorias categoria añadir iolanguage

iolanguage - son - ¿Cuál es la diferencia entre newSlot y setSlot en el lenguaje Io?



insertar categorias en wordpress (1)

En el lenguaje Io, hay 2 métodos para crear ranuras: newSlot y setSlot. Ambos parecen tener un comportamiento similar, excepto que newSlot también crea un configurador. ¿Qué casos existen para la necesidad de crear un configurador al mismo tiempo que la creación de la ranura? ¿Cuál es exactamente el propósito del setter?


Creo que es una conveniencia que proporciona buenas prácticas de codificación. Por lo tanto, si desea exponer un atributo de objetos, newSlot o su sinónimo ::= son la forma preferida de hacerlo.

newSlot puede hacer que las cosas se vean mejor. Por ejemplo.

Animal := Object clone do ( legs ::= nil // creates leg slot & setLegs() setter tail ::= nil // creates tail slot & setTail() setter ) // I think below is more aesthetic Cat := Animal clone setLegs(4) setTail(1) // compared to this Dog := Animal clone do (legs = 4; tail = 1)

Y también puede moverse por do() contexto. Por ejemplo.

Pet := Animal clone do ( name ::= nil ) myPetCats := list("Ambrose", "Fluffy", "Whiskers") map (petName, Pet clone do (name = petName) // throws exception )

El Pet clone do (name = petName) morirá al lanzar Exception: Pet does not respond to ''petName'' porque do() se interpreta dentro del contexto de Pet clonado y, por lo tanto, no puede ver petName .

Así que en lugar de eso necesitas usar el setter:

myPetCats := list("Ambrose", "Fluffy", "Whiskers") map (petName, Pet clone setName(petName) )