En el lenguaje Io, hay 2 métodos para crear slots: newSlot y setSlot. Ambos parecen tener un comportamiento similar, excepto que newSlot también crea un setter. ¿Qué casos hay para la necesidad de crear un setter al mismo tiempo que la creación de tragamonedas? ¿Cuál es exactamente el propósito del colocador de todos modos?¿Cuál es la diferencia entre newSlot y setSlot en el lenguaje Io?
28
A
Respuesta
34
Creo que es una conveniencia que proporciona buenas prácticas de codificación. Por lo tanto, si desea exponer un atributo de objetos, entonces newSlot
o su sinónimo ::=
es la forma preferida de proceder.
newSlot
puede hacer que las cosas se vean mejor. Por ej.
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 se puede obtener alrededor de do()
contexto. Por ej.
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án tirar Exception: Pet does not respond to 'petName'
porque do()
se interpreta dentro del contexto Pet
clonado y para que no pueda ver petName
.
Así que en lugar es necesario utilizar la incubadora:
myPetCats := list("Ambrose", "Fluffy", "Whiskers") map (petName,
Pet clone setName(petName)
)
Cuestiones relacionadas
- 1. ¿cuál es la diferencia entre la memoria asignada io y io io mapeado
- 2. ¿Cuál es la diferencia entre un lenguaje y un marco?
- 3. ¿Cuál es la diferencia entre las dependencias de maven org.apache.commons: commons-io y commons-io: commons-io?
- 4. diferencia entre IO-APIC-fasteoi y IO-APIC-edge
- 5. ¿Cuál es la diferencia entre STDIN y $ stdin en Ruby?
- 6. ¿Cuál es la diferencia entre% d y% * d en el lenguaje c?
- 7. ¿Cuál es la diferencia entre el lenguaje compilado y el interpretado?
- 8. ¿Cuál es la diferencia entre DMA y IO mapeado en memoria?
- 9. ¿cuál es la diferencia entre:.! y: r !?
- 10. Cuál es la diferencia entre $ y jQuery
- 11. ¿Cuál es la diferencia entre dict() y {}?
- 12. Cuál es la diferencia entre $ (...) y `...`
- 13. ¿Cuál es la diferencia entre .ToString (+) y ""
- 14. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 15. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 16. ¿Cuál es la diferencia entre + = y = +?
- 17. ¿Cuál es la diferencia entre ".equals" y "=="?
- 18. Cuál es la diferencia entre = y: =
- 19. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 20. ¿Cuál es la diferencia entre {0} y ""?
- 21. ¿Cuál es la diferencia entre " " y ""?
- 22. ¿Cuál es la diferencia entre el operador "=" y "==" en Bash?
- 23. ¿Cuál es la diferencia entre: = y + = en el archivo make?
- 24. ¿Cuál es la diferencia entre ASP.NET y C#?
- 25. Backbone.Js - ¿Cuál es la diferencia entre el y $ el?
- 26. ¿Cuál es la diferencia entre el mango y el hilo?
- 27. ¿Cuál es la diferencia entre el NSImage y el UIImage?
- 28. ¿Cuál es la diferencia entre el casting y la conversión?
- 29. ¿Cuál es la diferencia entre el colado y la coerción?
- 30. ¿cuál es la diferencia entre el complemento y la biblioteca?
También me preguntaba lo que un colocador estaba al final del primer día de Io en 7 idiomas en 7 semanas. – Jedidja