Объект: Ошибка каталога: не понял #name - PullRequest
1 голос
/ 10 мая 2019

Следующий простой код для перечисления файлов в каталоге: здесь :

(Directory name: '.')  
allFilesMatching: '*.st' 
do: [ :f | (f name) displayNl ]

Однако он не работает и выдает следующую ошибку:

$ gst mysrc.st
Object: Directory error: did not understand #name:
MessageNotUnderstood(Exception)>>signal (ExcHandling.st:254)
Directory class(Object)>>doesNotUnderstand: #name: (SysExcept.st:1448)
UndefinedObject>>executeStatements (firstline.st:1)

Я работаю над GNU Smalltalk версии 3.2.5 в Debian Stable Linux .

Где проблема и как ее можно решить?

1 Ответ

2 голосов
/ 10 мая 2019

Я не знаю, кто написал это в rosettacode , но селектор #name: неправильный (не существует в классе Directory). Если вы отметите Directory class, вы не найдете там такого селектора. Вместо этого вы найдете #working: селектор. У селектора есть описание:

working: dirName
    Change the current working directory to dirName.

Ваш код будет выглядеть следующим образом:

(Directory working: '.') allFilesMatching: '*.st' do: [ :f | 
   (f name) displayNl
]
...