P. *_*eca 4 drm wolfram-mathematica
编码包的一个令人讨厌的事情是它们必须在一个单独的文件中.如果我们想要分发一个简单的自包含app(编码),我们需要提供两个文件:app"interface"和app包.
如果我将编码文件的所有内容放在一个字符串中,并将该字符串转换为一个InputStream,那么我将该包内容视为一个文件.
但Get,据我所知,这是唯一具有解码功能的操作(也被Needs使用),不适用于Streams.它只适用于真实文件.
有人能找到一种获取流的方法吗?
等待Mathematica到达我的iPhone所以无法测试任何东西,但为什么不把字符串写入临时文件并得到它?
更新
这是怎么做的:
encoded = ToFileName[$TemporaryDirectory, "encoded"];
Export[encoded, "code string", "Text"]; (*export encrypted code to temp file *)
Run Code Online (Sandbox Code Playgroud)
使用ASCII编辑器从包含编码代码的ASCII文件中复制代码字符串的内容非常重要,并将其粘贴到现有的空引号("")之间.然后,Mathematica将自动转义代码中可能出现的反斜杠和引号.此文件早先使用过Encode.不能在示例代码中这样做,因为SO的Markdown与字符串混杂.
Get[encoded] (* get encrypted code and decode *)
DeleteFile[encoded] (* Remove temp file *)
Run Code Online (Sandbox Code Playgroud)
Get似乎没有必要进行解码.ImportString确实有效:
ImportString["code string", "NB"]
Run Code Online (Sandbox Code Playgroud)
如上所述,将编码的tekst从ASCII编辑器直接粘贴到""之间,然后让MMA进行转义.
