【问题标题】:How do I write contents of a variable to a text file in Rebol 2?如何将变量的内容写入 Rebol 2 中的文本文件?
【发布时间】:2014-11-07 18:40:13
【问题描述】:

这里是新手问题... 我想将“what”函数的输出写入文本文件。

这就是我所做的:

我创建了一个名为“text”的变量并将“what”的输出分配给它

文本:[什么]

现在我想把“text”变量的内容写入一个txt文件……

感谢任何帮助。提前致谢!

【问题讨论】:

    标签: rebol rebol2


    【解决方案1】:

    将语句输出写入文件的最简单方法是使用

    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
    

    【讨论】:

      【解决方案2】:

      不幸的是,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
      ]
      

      这个函数有点hackish(文件名已设置,但它会返回你想要的)。您可以扩展该功能以接受文件名或做任何您想做的事情。 tabnewline 可以使文件输出更漂亮。

      需要注意的重要事项:

      1. 打印返回未设置
      2. 使用source 了解功能的作用
      3. write %filename value 将一次将一个值全部写入文件。如果你open一个文件,你可以写更多次。

      【讨论】:

        【解决方案3】:

        相当初级:如果您只想保存一些文本,请使用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 或在线查看:loadsavereadwrite

        【讨论】:

          猜你喜欢
          • 2013-01-27
          • 1970-01-01
          • 2012-07-22
          • 1970-01-01
          • 1970-01-01
          • 2020-06-30
          • 2011-03-05
          • 2014-04-07
          • 2014-02-28
          相关资源
          最近更新 更多