我刚刚开始使用gnu-smalltalk
。我从here那里获取了以下代码,并尝试使用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
问题出在哪里,如何解决。感谢您的帮助。
答案 0 :(得分:3)
这里的混淆是完整方法(函数)的定义之间的区别,完整方法(函数)包括(在C中为)方法/函数头和方法/函数主体。标头是带有任何形式参数的方法的名称,而方法的主体是调用该方法时执行的代码。
在您的示例中,您正在复制一个完整的方法并执行该方法,就好像它只是一段代码一样。因此,在代码块开头的合法内容就不在开头。编译器认为您正在“发送消息#|”这是非法的。
如果不使用方法名称(函数标头),则代码块以竖线(竖线)开头,竖线是声明变量的合法语法。
答案 1 :(得分:1)
只需删除display_etc
行,它不属于代码。