2

我在 Win-7 64 位上使用 Rebol/Core 278-3.1,从标准 Windows 命令外壳启动。而且我想知道如何向我的年轻朋友(背景为网页设计师)解释解释器的CD命令不需要%.

它让我想起 DOS 后不需要空格cd。REPL 不是一个 shell,那么为什么要把这个快捷方式当成一个 shell 呢?为什么在没有设置这样的单词时将目录的字符串名称视为单词?乍一看,它不会使代码不必要地模棱两可吗?

(认为​​这是您的第一次编程语言体验……而不是 ls cd mv 在 unix shell 中的老用户。)

即使设置了一个词,该词也会被 cd 忽略,除非使用了 get-word ......例如:

dir %tests

dir tests:

"complete" wherecd tests就像没有词一样get-word :tests


注意: Saphirion R3 具有以下行为:如果我将一个单词设置为一个目录名称但为大写,get-word 会将我移动到该目录并以不正确的大写形式显示它。但是没有那个名字的目录。我相信 cd 应该给出一个错误。当然,作为 unicode 和符合类 linux 世界的问题.. 或者这仅适用于 Windows?Off 我用 ubuntu 和 Syllable 去我的虚拟盒子...

4

2 回答 2

3

cd您可以通过编写来查看函数的来源

source cd

在那里你可以发现为方便起见,其他数据类型被转换为文件。

“当没有设置这样的单词时,为什么将目录的字符串名称视为单词?”

Rebol 通过允许符号编程的语法识别单词。一个词是否被设置为一个词都没有关系。

“[如果]我将一个单词设置为一个目录名称但大写,get-word 将我移动到该目录并以不正确的大写形式显示它”

一些操作系统(例如 Windows)试图不区分大小写,假设这对人类来说更方便。

出于同样的原因,Rebol 字符串处理默认也是不区分大小写的。

“有没有人建议 chdir 可以拥有所有便利和怪癖,并且 cd 期望一个正确命名的文件?”

这基本上就是发生的事情,但以不同的方式发生。有一个change-dir函数坚持正确的(文件!)数据类型,而该cd函数是“方便快捷方式”。

于 2013-08-05T15:28:07.837 回答
-1

您说“REPL 不是外壳”。我完全同意。在相关的说明中,我坚决反对:

append [x y z] q

...似乎通过调用quit. 这是一个容易犯的错误。而且我觉得做你在核心解释器中注意到的类似快捷方式是明智和愚蠢的。Rebol 是一种有文化的、类似英语的语言,读起来很清楚……像LSCD这样的东西不属于核心。如果有的话,它们应该是 shell 方言的一部分。

即使合法词的域没有映射到合法字符串的范围,方言作者是否应该能够将词视为字符串?我认为它应该被允许,但我同意它在交付可执行文件中开创了一个糟糕的先例。

于 2013-08-05T15:37:58.870 回答