我是Smalltalk的新手,正在尝试弄清楚如何将命令行参数作为文件名。我已经在网上看到以下片段:
f := FileStream open: 'fileName' mode: FileStream read
但是我想知道如何根据用户对fileName的命令行输入来修改它。以下是该项目的编译和运行方式:
gst file1.st file2.st file3.st file4.st -f mainFile.st readThisFile.dat addiotnalArg
那么如何在Smalltalk中提取用户指定文件的名称?
答案 0 :(得分:2)
根据https://www.gnu.org/software/smalltalk/manual/gst.html#Invocation
您可以使用Smalltalk arguments
访问GNU Smalltalk本身未解释的命令行参数。这将是一个包含这些参数作为字符串的数组。
-a
--smalltalk-args随后将所有选项作为要通过
Smalltalk arguments
检索的Smalltalk代码的参数,而忽略它们作为GNU Smalltalk本身的参数。 [...]-f
--file以下两个命令行是等效的:
gst -f file args... gst -q file -a args...
由于readThisFile.dat是第一个参数,因此可以使用Smalltalk arguments at: 1
访问它,并将其放入FileStream构造函数消息中:
f := FileStream open: (Smalltalk arguments at: 1) mode: FileStream read
您也可以使用first
f := FileStream open: Smalltalk arguments first mode: FileStream read.