rebol - 字面词的类型

标签 rebol red

我在看 Bindology并尝试了这个:

>> type? first ['x]
== lit-word!
>> type? 'x
== word!

我期待 type? 'x返回 lit-word!也。欣赏任何见解。

最佳答案

一句话!如果评估者在“实时”上下文中看到,则解析为该词本身。当你想传递一个 WORD 时,它可以用来简单地用一个标记来抑制评估!函数的值。 (当然,在你自己的方言中,当你扮演“评估者”的角色时,它是一个 Tinker-Toy,你可以让它代表任何你想要的意思。)

如果你想得到一个真正的 LIT-WORD!您将不得不以某种方式抑制评估器将其转换为 WORD!。您注意到可以通过从未评估的块中挑选它来实现,例如使用 first ['x] .但更“正确”的方法是使用 quote 'x :

>> type? quote 'x
== lit-word!

当心一个奇怪的错误,称为“点燃词衰减”:
>> x-lit: quote 'x
>> type? x-lit
== word!

那是 corrected in Red并且正在等待 Rebol 中的修正。在此之前,您必须使用 GET-WORD!从保存它的变量中提取一个亮字值:
>> x-lit: quote 'x
>> type? :x-lit
== lit-word!

(您可能已经遇到过这种做法,作为获取单词值的方式与通过评估器“运行”它的方式......就像当您想要处理函数的值与调用它时一样。它应该没有必要在值(value)持有点燃词!。历史的意外,它似乎。)

关于rebol - 字面词的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29859803/

相关文章:

red - 目标类型转换无效 : red-context

recursion - 打破递归函数

rebol - 沙盒红色功能

rebol - 如何从键盘上读取红色/rebol 的键

javascript - Rebol 真的有 javascript 原型(prototype)属性的等价物吗?

cgi - 如何写入系统/端口/输入?

curl - 从 rebol 或 red 调用curl 不起作用

bind - 不应该绑定(bind)? '全局变量返回系统/单词上下文?