rnso
rnso

Reputation: 24593

Object: Directory error: did not understand #name

Following simple code to list files in a directory is from here:

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

However, it is not working and giving following error:

$ 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)

I am working on GNU Smalltalk version 3.2.5 on Debian Stable Linux.

Where is the problem and how can it be solved?

Upvotes: 1

Views: 743

Answers (1)

tukan
tukan

Reputation: 17345

I don't know who has written it on the rosettacode, but the #name: selector is incorrect (does not exist in the Directory class). If you check the Directory class you won't find such selector there. Instead you will find a #working: selector. The selector has a description:

working: dirName
    Change the current working directory to dirName.

Your code will then look like this:

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

Upvotes: 2

Related Questions