Как мне записать содержимое переменной в текстовый файл в Rebol 2?

Вопрос новичка здесь... Я хотел бы записать вывод функции "что" в текстовый файл.

Итак, вот что я сделал:

Я создал переменную с именем "текст" и присвоил ей вывод "что"

текст: [что]

Теперь я хочу записать содержимое переменной "text" в текстовый файл...

Любая помощь приветствуется. Заранее спасибо!

3 ответа

Самый простой способ записать вывод операторов в файл - это использовать

echo %file.log
what

с echo none ты заканчиваешь это

>> help echo
USAGE:
      ECHO target 

DESCRIPTION:
     Copies console output to a file.
     ECHO is a function value.

ARGUMENTS:
     target -- (Type: file none logic)

(SPECIAL ATTRIBUTES)
     catch

К сожалению, на самом деле значение не возвращается из what функция:

Попробуйте следующее в консоли:

 print ["Value of `what` is: " what]

Так write %filename.txt [what] не будет работать.

Вместо этого вы можете посмотреть на источник what

source what

который возвращает:

what: func [
    "Prints a list of globally-defined functions."
    /local vals args here total
][
    total: copy []
    vals: second system/words
    foreach word first system/words [
        if any-function? first vals [
            args: first first vals
            if here: find args /local [args: copy/part args here]
            append total reduce [word mold args]
        ]
        vals: next vals
    ]
    foreach [word args] sort/skip total 2 [print [word args]]
    exit
]

Обратите внимание, что эта функция только печатает (она не возвращает найденные значения). Мы можем изменить скрипт так, чтобы он делал то, что вы хотите:

new-what: func [
    "Returns a list of globally-defined functions."
    /local vals args here total collected
][
    collected: copy []
    total: copy []
    vals: second system/words
    foreach word first system/words [
        if any-function? first vals [
            args: first first vals
            if here: find args /local [args: copy/part args here]
            append total reduce [word mold args]
        ]
        vals: next vals
    ]
    foreach [word args] sort/skip total 2 [append collected reduce [word tab args newline]]
    write %filename.txt collected
    exit
]

Эта функция немного хакерская (имя файла установлено, но оно вернет то, что вы хотите). Вы можете расширить функцию, чтобы принять имя файла или делать все, что вы хотите. tab а также newline чтобы сделать вывод файла красивее.

Важные вещи, на которые следует обратить внимание:

  1. Печать возвращается неустановленной
  2. использование source узнать, что делают функции
  3. write %filename value выпишет значение в файл все сразу. если ты open файл, вы можете написать больше раз.

Довольно элементарно: использовать write если вы просто хотите сохранить текст, read восстановить его; использование save если вы хотите сохранить некоторые данные и использовать load чтобы восстановить это.

>> write %file.txt "Some Text"
>> read %file.txt
== "Some Text"

>> text: [what]
>> save/all %file.r text
>> load %file.r
== [what]

Вы можете получить больше информации о каждом слове в приглашении: help save или посмотреть онлайн: load, save, read а также write,

Другие вопросы по тегам