2

鉴于此块

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!
4

2 回答 2

5

您需要使用正确的根完成输入字符串路径,然后 LOAD 并评估它。

>> path: "/usr/local"
>> insert path "fs"
>> do load path
== [
    bin []
]
于 2013-02-26T19:29:08.543 回答
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
于 2013-02-27T21:09:25.693 回答