Vous ne voulez peut-être pas vraiment le faire. J'utilise généralement les dérivés de Squeak et Array new : fonctionne mais n'est souvent pas ce que vous voulez car les Arrays sont de taille fixe (c'est-à-dire que vous ne pouvez pas ajouter ou supprimer des éléments) et donc vous utilisez typiquement quelque chose comme OrderedCollection à la place. De plus, vous ne voulez généralement pas stocker la taille dans un ivar mais plutôt envoyer #size à votre collection chaque fois que vous avez besoin de savoir combien d'éléments elle contient.
J'ai modifié votre exemple de code en fonction des suggestions ci-dessus (remarquez également que vous n'avez pas besoin d'envoyer #initialize explicitement, cela est fait pour vous via #new :):
Object subclass: Student [
| marks |
initialize [
marks := OrderedCollection new: 10.
].
addMark: newMark [
marks add: newMark
].
removeMarkAt: markIdx [
marks removeAt: markIdx
].
size [
^ marks size
]
]
student := Student new.
Si vous avez vraiment besoin de créer un tableau de taille fixe, veuillez mettre à jour la question en indiquant la variante de Smalltalk que vous utilisez afin que quelqu'un ayant une connaissance spécifique de l'implémentation puisse vous aider. Le problème que vous semblez rencontrer est que votre implémentation Smalltalk considère Array comme une classe abstraite et que vous devez donc instancier une sous-classe de celle-ci pour obtenir un tableau de taille fixe.