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
方法。