我正在尝试将一些字符串值保存到一个块中,以便我可以将该块保存到文本文件中。我使用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
附加到代码时,代码未被评估为代码。如何以块状方式将字符串值保存到文本文件中?我应该做其他事情来实现这个目标吗?欢迎提出任何意见/疑问。
答案 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 ]