2016-07-25 2 views

ответ

1

Вы создали новый слот внутри метода и назвали его self. Это означает, что он исчезает, когда метод возвращается. В Io self не является ключевым словом, нет ключевых слов, и, следовательно, он не имеет особого значения.

Что вы ищете, это использовать метод, который изменяет самость. Поскольку List написан на C, вам нужно будет напрямую связать что-то, написанное на C, или с чем-то, что взаимодействует с чем-то написанным на C, чтобы очистить содержимое списка. Рассмотрим:

myObject drop := method(
    self empty 
) 

Что происходит здесь список есть метод empty, который удаляет все элементы и возвращает в настоящее время пустой объект. Он ведет переговоры с примитивным методом List, который называется removeAll, чтобы выполнить это.

Это немного разрезанный и сухой, хотя. В общем случае, в других случаях, вы можете сохранить элемент, который хотите вернуть, прежде чем удалять его из коллекции. т.е.

myCollection drop := method(
    result := self at(42) 
    self removeAllTheThings 
    result 
) 

Поскольку не каждый тип коллекции, которая могла бы существовать, будет иметь removeAll или empty метод, построенный в.

 Смежные вопросы

  • Нет связанных вопросов^_^