5

そのブロックをテキスト ファイルに保存できるように、いくつかの文字列値をブロックに保存しようとしています。VID を使用してフォームからこれらの値を取得しています。

これを行う 1 つの方法は、単純に文字列をファイルに保存することです。しかし、データをブロックとして取得できることをお勧めします。

これは私がやろうとしていることです:

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 を使用しないと、contact-name がその値に還元され、オブジェクトになります! to-set-word に渡される前に。

そのため、contact-name を lit-word に変更する必要があります。'連絡先 。

reduce はこれを word! に還元し、 to-set-word に渡します。

于 2013-05-29T12:57:17.743 に答える
1

Reduceは、「連絡先名」でもあるフィールドの名前もリセットします。

だから、これはより良いでしょう

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