Я пытаюсь создать чрезвычайно простой векторный класс в качестве подкласса Array в Smalltalk. Мой код для создания класса выглядит следующим образом:Basic Smalltalk Subclass
Array subclass: #Vector
Vector comment: 'I represent a Vector of integers'
Vector class extend [
new [
| r |
<category: 'instance creation'>
r := super new.
r init.
^r
]
]
Vector extend [
init [
<category: 'initialization'>
]
]
Очевидно, что я не писал никаких методов, но я просто пытаюсь получить эту часть рабочей первым. После того, как класс создан, как указано выше, если я типа: v: = Вектор новые: 4 я получаю ошибку:
Object: Vector error: should not be implemented in this class, use #new instead
SystemExceptions.WrongMessageSent(Exception)>>signal (ExcHandling.st:254)
SystemExceptions.WrongMessageSent class>>signalOn:useInstead: (SysExcept.st:1219)
Vector class(Behavior)>>new: (Builtins.st:70)
UndefinedObject>>executeStatements (a String:1)
nil
Я предположил, что, поскольку это подкласс Array, я мог бы создать вектор в этот способ. Каков наилучший способ сделать это? Благодаря!
Редактировать - я понял. Прочитав глубже в учебнике, я обнаружил, что мне нужно включить < shape: #pointer >
Я думаю, что у вас такая же проблема, как и у этого парня: http://stackoverflow.com/questions/5613363/gnu-smalltalk-problem-with-example-in-tutorial-object-creation – andrewdotnich
Я посмотрел этот пост и изменил эти вещи, но у меня все те же результаты. – FlapsFail