1
我试图从一个方法内设置一个对象的值。这里有一个例子:设置从一个方法中的对象的值在Io
myObject := list(1,2,3,4,5)
myObject drop := method(
self := list()
)
myObject drop
myObject println //returns original object
我在做什么错?
我试图从一个方法内设置一个对象的值。这里有一个例子:设置从一个方法中的对象的值在Io
myObject := list(1,2,3,4,5)
myObject drop := method(
self := list()
)
myObject drop
myObject println //returns original object
我在做什么错?
你所做的是在该方法内部创建一个新插槽并将其命名为self
。这意味着当方法返回时它会消失。在Io self
不是关键字,没有关键字,因此它没有特别的含义。
你在找什么是使用修改自我的方法。由于List
是用C语言编写的,因此您必须直接与C语言编写的某些东西或某些与C语言编写的东西进行交互,以清除列表中的内容。试想一下:
myObject drop := method(
self empty
)
这是怎么回事是名单有一个名为empty
方法,删除所有项目,并返回现在是空的对象。它与一个名为removeAll
的原始List方法进行通信来实现这一点。
虽然这是有点切割和干燥。在一般情况下,在其他情况下,您可能希望保存要从收集中删除之前要返回的项目。即,
myCollection drop := method(
result := self at(42)
self removeAllTheThings
result
)
由于不是可能存在每个类型的集合,将有建于removeAll
或empty
方法。