鉴于此块
fs: [
usr [
local [
bin []
]
share []
]
bin []
]
我可以使用路径表示法检索项目,如下所示:
fs/usr/local
当路径是字符串时,我该怎么做?
path: "/usr/local"
find fs path ;does not work!
find fs to-path path ;does not work!
答案 0 :(得分:5)
您需要使用正确的根完成输入字符串路径,然后加载并评估它。
>> path: "/usr/local"
>> insert path "fs"
>> do load path
== [
bin []
]
答案 1 :(得分:2)
您知道Rebol有原生路径类型吗?
虽然这并没有完全回答你的问题,但我还是想在Rebol中添加一个如何直接使用路径的参考资料。 Rebol有 很多 的数据类型,如果可以,您应该利用这种丰富的语言功能。特别是当你开始使用和建立方言时,知道存在哪些类型以及如何使用它们会变得更加有效。
以下是如何在不使用字符串的情况下直接构建和运行路径的示例。为了表示源代码中的路径,可以使用 lit-path!数据类型。
示例:
>> p: 'fs/usr/local
== fs/usr/local
>> do p
== [
bin []
]
你甚至可以追加一条操纵它的路径:
>> append p 'bin
== fs/usr/local/bin
>> do p
== []
如果它存储在一个块中,你使用一个路径!直接输入(不是点亮路径!):
>> p: [fs/usr/local/bin]
== [fs/usr/local]
>> do first p
== [
bin []
]
还要注意直接使用路径比使用字符串更有优势,因为路径由一系列单词组成,与字符串示例相比,您可以更轻松地进行一些操作:
>> head change next p 'bin
== fs/bin/local
>> p: 'fs/path/issue/is
== fs/path/issue/is
>> head replace p 'is 'was
== fs/path/issue/w
而不是使用字符串:
>> p: "fs/path/issue/is"
== "fs/path/issue/is"
>> head replace p "is" "was"
== "fs/path/wassue/is"
如果要浏览磁盘而不是Rebol数据集,则必须简单地为'FS提供文件的值!从那里浏览路径的其余部分(这是路径在文件!类型上的工作方式):
fs: %/c/
read dirize fs/windows