Smalltalk 不理解基本符号'|';

Smalltalk 不理解基本符号'|';,smalltalk,gnu-smalltalk,Smalltalk,Gnu Smalltalk,我刚刚开始使用gnu smalltalk。我从中获取了以下代码,并尝试使用gst命令运行它 display_etc | pipe | pipe := FileStream popen: 'ls -l /etc' dir: FileStream read. Transcript showCr: pipe contents. ! 但它给出的错误是它不理解基本符号|: $ gst dir_etc.st Object: nil error: did not u

我刚刚开始使用gnu smalltalk。我从中获取了以下代码,并尝试使用
gst
命令运行它

display_etc
   | pipe |
   pipe := FileStream popen: 'ls -l /etc' dir: FileStream read.        
   Transcript showCr: pipe contents. !   
但它给出的错误是它不理解基本符号
|

$ gst dir_etc.st 
Object: nil error: did not understand #|
MessageNotUnderstood(Exception)>>signal (ExcHandling.st:254)
UndefinedObject(Object)>>doesNotUnderstand: #| (SysExcept.st:1448)
UndefinedObject>>executeStatements (dir_etc.st:2)
dir_etc.st:3: expected expression

问题在哪里?如何解决。感谢您的帮助。

只需删除
display\u etc
行,它不属于代码。

这里的混淆是一个完整方法(函数)的定义之间的区别,它包括(在C中是什么)方法/函数头和方法/函数体。标头是具有任何形式参数的方法的名称,而方法体是调用该方法时执行的代码

在您的示例中,您正在复制一个完整的方法并将其作为一个代码块来执行。因此,在代码块开头合法的东西并不在开头。编译器认为您正在“发送消息”,这是非法的


如果不使用方法名(函数头),则代码块以竖线(管道)开头,竖线是声明变量的合法语法。

我想创建一个函数,然后执行它。我该怎么做?创建方法的过程会因Smalltalk的方言而异。我对这个不熟悉。试试谷歌搜索“gnu smalltalk教程”。