我在 Win-7 64 位上使用 Rebol/Core 278-3.1,从标准 Windows 命令 shell 启动。我想知道如何向我的年轻 friend (一位网页设计师)解释解释器的 CD
命令不需要 %
.
这让我想起了 DOS 在 cd
后面不需要空格。 REPL 不是 shell,那么为什么要将此快捷方式设置为 shell 呢?为什么在没有设置单词的情况下,目录的字符串名称会被视为单词?乍一看,这是否会让代码变得不必要的含糊不清?
(想象一下这是您第一次编程语言体验......而不是作为 unix shell 中 ls cd mv 的老用户。)
即使设置了一个单词,该单词也会被 cd 忽略,除非使用 get-word ...示例如下:
dir %tests
和
dir tests:
“完整”,其中cd测试
的作用就好像没有带有get-word :tests
的单词
注意: Saphirion R3 具有以下行为:如果我将一个单词设置为目录名称但为大写,则 get-word 将我移动到该目录并以不正确的大写形式显示它-案件。但没有具有该名称的目录。我相信cd应该给出了错误。当然是关于unicode和与类似linux世界的合规性的问题..或者这仅适用于Windows?我用 ubuntu 和 Syllable 进入我的 Virtual Box ...
最佳答案
您可以通过编写来查看cd
函数的源代码
source cd
在那里您可以发现,为了方便起见,其他数据类型都转换为文件。
"Why is a string name of a dir treated as a word when no such word has been set?"
Rebol 通过允许符号编程的语法来识别单词。一个单词是否被设置为一个单词并不重要。
"[If] I set a word to a dir name but in upper-case, the get-word moves me to that dir and shows it in that incorrect upper-case"
某些操作系统(例如 Windows)尝试不区分大小写,认为这对人类来说更方便。
出于同样的原因,Rebol 字符串处理默认情况下也不区分大小写。
"Did anyone ever suggest that chdir could have all convenience and quirks and that cd expect a file correctly named ?"
这本质上就是发生的事情,但方式不同。有一个 change-dir
函数坚持使用正确的(文件!)数据类型,而 cd
函数是一个“便捷的快捷方式”。
关于string - Rebol cd 不需要%?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18061235/