不理解基本符号'|'
Not understanding basic symbol '|'
我刚开始使用 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
问题出在哪里,如何解决。感谢您的帮助。
只删除display_etc
行,它不属于代码。
这里的混淆是一个完整方法(函数)的定义之间的区别,它包括(在 C 中是什么)method/function header 和 method/function body。 header 是方法名,可以带任何形式参数,而方法的body 是调用方法时执行的代码。
在您的示例中,您正在复制一个完整的方法并像执行一个代码块一样执行它。因此,在代码块开头合法的东西不在开头。编译器认为你是 "sending the message #|" 这是非法的。
如果省略方法名称(函数 header),则代码块以竖线(竖线)开头,这是声明变量的合法语法。
我刚开始使用 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
问题出在哪里,如何解决。感谢您的帮助。
只删除display_etc
行,它不属于代码。
这里的混淆是一个完整方法(函数)的定义之间的区别,它包括(在 C 中是什么)method/function header 和 method/function body。 header 是方法名,可以带任何形式参数,而方法的body 是调用方法时执行的代码。
在您的示例中,您正在复制一个完整的方法并像执行一个代码块一样执行它。因此,在代码块开头合法的东西不在开头。编译器认为你是 "sending the message #|" 这是非法的。
如果省略方法名称(函数 header),则代码块以竖线(竖线)开头,这是声明变量的合法语法。