将值保存到块而不是代表它的单词标签

时间:2013-02-14 18:25:13

标签: string block rebol rebol2

我正在尝试将一些字符串值保存到一个块中,以便我可以将该块保存到文本文件中。我使用VID从表单中获取这些值。

执行此操作的一种方法是简单地将字符串保存到文件中。但我希望能够将数据检索为块。

这就是我打算做的事情:

view layout [
    contact-name: field
    save-button: btn "Save" [
        saved-data-block: copy []
        append saved-data-block [[contact-name: contact-name/text]] ;problem here
        save my-file saved-data-block
    ]
]

对于名称字段中的Rebol User之类的输入,文件中存储的内容应该类似[contact-name: "Rebol User"],但内容为[contact-name: contact-name/text]

据我所知,问题是我在将saved-data-block附加到代码时,代码未被评估为代码。如何以块状方式将字符串值保存到文本文件中?我应该做其他事情来实现这个目标吗?欢迎提出任何意见/疑问。

4 个答案:

答案 0 :(得分:3)

如果您不需要专门使用reduce,撰写可以更好地调出您想要“独处”的部分。只评估括号中的内容,其他所有内容都不会被评估。例如:

append/only saved-data-block compose [contact-name: (get-face contact-name)]

撰写通常是表达样板的最清晰的方法,其中指出您希望进行评估的小部件。当然,理解减少也是很好的。

答案 1 :(得分:3)

格雷哈姆的回答实际上错过了一个勾号: - )

append/only saved-data-block reduce [ to-set-word 'contact-name get-face contact-name ]

如果没有'reduce将联系人名称减少到它的值,就是一个对象!在它交给to-set-word之前。

因此,您必须将联系人姓名更改为有关单词! 'contact-name。

reduce将此缩小为单词!,然后将其传递给to-set-word。

答案 2 :(得分:3)

这是另一个想法:

append/only saved-data-block repend [contact-name:] get-face contact-name 

这次联系人姓名:没有减少,所以它保持一个单词!,并且附加了表单元素的值。

双重追加看起来不太好,但可以节省击键次数。

答案 3 :(得分:1)

Reduce也会重置字段的名称,也就是“contact-name”。

所以,这会更好

append/only saved-data-block reduce [ to-set-word contact-name get-face contact-name ]