5

我正在尝试将一些字符串值保存到一个块中,以便我可以将该块保存到一个文本文件中。我从使用 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

4 回答 4

3

如果您不需要专门使用 reduce,那么compose可能是一种更好的方式来调出您想要“不理会”的部分。只有括号中的东西会被评估,其他的都不会改变。例如:

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

Compose 通常是表达样板文件的最清晰方式,其中包含您想要评估的小部分。当然,理解 reduce 也很好。

于 2013-02-15T00:29:01.167 回答
3

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

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

没有 ' reduce 会将联系人名称还原为其值,即一个对象!在交给 to-set-word 之前。

因此,您必须将联系人名称更改为一个亮字!'联系人姓名 。

reduce 将其简化为一个单词!,然后将其交给 to-set-word 。

于 2013-05-29T12:57:17.743 回答
3

这是另一个想法:

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

这一次 contact-name: 没有减少,所以它仍然是一个 set-word!,并附加了来自表单元素的值。

双附加看起来不太好,但可以节省击键。

于 2013-05-29T13:05:27.220 回答
1

Reduce 还将重置也是“联系人姓名”的字段的名称。

所以,这会更好

append/only saved-data-block reduce [ to-set-word contact-name get-face contact-name ]
于 2013-02-14T19:15:40.827 回答