作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Io 语言中,有两种创建槽的方法:newSlot 和 setSlot。除了 newSlot 还创建了一个 setter 之外,两者似乎都有相似的行为。需要在创建插槽的同时创建 setter 的情况有哪些?无论如何,setter 的目的究竟是什么?
最佳答案
我相信它提供了良好的编码实践的便利。因此,如果您想公开对象属性,那么 newSlot
或其同义词 ::=
是首选的方式。newSlot
可以让事情看起来更好。例如。
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)
do()
语境。例如。
Pet := Animal clone do (
name ::= nil
)
myPetCats := list("Ambrose", "Fluffy", "Whiskers") map (petName,
Pet clone do (name = petName) // throws exception
)
Pet clone do (name = petName)
throw 会死
Exception: Pet does not respond to 'petName'
因为
do()
在克隆
Pet
中解释上下文,所以它看不到
petName
.
myPetCats := list("Ambrose", "Fluffy", "Whiskers") map (petName,
Pet clone setName(petName)
)
关于iolanguage - Io 语言中的 newSlot 和 setSlot 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5972327/
在 Io 语言中,有两种创建槽的方法:newSlot 和 setSlot。除了 newSlot 还创建了一个 setter 之外,两者似乎都有相似的行为。需要在创建插槽的同时创建 setter 的情况
我是一名优秀的程序员,十分优秀!