我在看 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/