Прежде всего написано Smalltalk, а не SmallTalk.
Вам нужно подумать о том, чего вы пытаетесь достичь. Поскольку вы не указали свой Smalltalk, я буду использовать тот, который я знаю больше всего, из ветки Smalltalk / X-jv.
Ваш комментарий показывает, что вы нашли метод atRandom
, который должен работать как вы указал в вашем вопросе:
atRandom
"Return any random element from the receiver"
^ self atRandom:Random
"
#(1 2 3) atRandom
Я пробовал его на Smalltalk / X, и он работает, как ожидалось.
Даже с вашим при выполнении в рабочей области он работает правильно:
#('Alex' 'Bob' 'Frank' 'Samantha') atRandom.'Frank'
('Frank'
- результат print it
)
Вы можете сделать это по-другому, например (это неоптимально, так как atRandom
работает правильно):
(#('Alex' 'Bob' 'Frank' 'Samantha') asOrderedColletion randomShuffle) at: 1.
Это делает OrderedCollection из массива, случайным образом перемешивает его и выбирает первую позицию.
Ваш метод может выглядеть следующим образом:
randomName: nameArray
^ nameArray atRandom