我正在尝试在 Smalltalk 中创建一个非常简单的 Vector 类作为 Array 的子类。我创建类的代码如下所示:
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 := Vector new: 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 的子类,所以我可以用这种方式创建一个 Vector。这样做的最佳方法是什么?谢谢!
编辑——我想通了。在深入阅读教程后,我发现我需要包含 <shape: #pointer>