DefineOutputStreamMethod
DefineOutputStreamMethod["name",{"fname1"function1,"fname2"function2,… }]
定义一个具有指定名称的自定义输出流方法,使得 Wolfram 语言可以调用流函数,用于打开和读取输出流.
更多信息
- 输出流方法可以提供字节的新来源,一种对字节流过滤的新方法,或者两者兼具.
- 可以提供下列输出流函数:
-
"NameTestFunction" 给定名称的流是否能被打开 "ConstructorFunction" 当打开一个新的流时调用 "CloseFunction" 关闭流并且释放它的资源 "WriteFunction" 对流写入字节 "FlushFunction" 确保在内存中缓存的字节写入流中 "ErrorTextFunction" 指明是否是一个错误 "ClearErrorFunction" 清楚错误提示 "StreamPositionFunction" 输入读取的流中的当前点 "OptionChangesFunction" 修改由 Options[stream] 返回的选项 - 只有 "ConstructorFunction" 必须提供给 DefineOutputStreamMethod. 如果函数没有被提供,那么其他函数有一个默认的定义.
- 使用流方法打开的每个 OutputStream 都有一个当前状态. 这里流方法可以把诸如句柄的信息存储到内在流资源、当前流为主、最新错误消息和流方法函数需要的其他信息. 初始状态表达式由 "ConstructorFunction" 返回. 其他函数将当前状态视为参数,并且返回新的状态值.
- 如果返回新状态值的函数没有提供,那么默认定义返回未修改的给定状态.
- 打开和关闭一个输出流的函数是:
-
名称 参数 返回值 "NameTestFunction" {streamname} TrueFalse "ConstructorFunction" {streamname,isAppend,caller,opts} {success,state} "CloseFunction" {state} ignored - 当流使用 Method->Automatic 打开时,需要"NameTestFunction",而且 Wolfram 语言需要基于 streamname 选择使用的流方法. 如果 "NameTestFunction" 返回 True,则将使用流方法. 如果没有提供 "NameTestFunction",默认的行为是返回 False.
- 当打开一个流用于写入时,调用 "ConstructorFunction". 它打开一个由 streamname 标志的流,它可以是一个文件名、URL 或者其他对流方法适当的资源识别. 如果流已经打开可以在末尾添加字节,则 isAppend 参数是 True,而如果它已经打开可以写入新资源,则为 False. caller 参数是发出消息的符号. 如果 success 是 True 的话,调用函数,例如 OpenWrite,将完成一个 OutputStream 的创建. state 用作流方法状态的初始值.
- 当 Close[st] 被调用时,"CloseFunction" 用于流 st. "ConstructorFunction" 中分配的资源应该被释放. 默认定义不执行任何操作.
- 写入流的函数包括:
-
名称 参数 返回值 "WriteFunction" {state,{byte...}} {byteCount,newstate} "FlushFunction" {state} {ignored,newstate} - "WriteFunction" 是写入流的重要函数. byteCount 结果是成功写入流的字节数目. 默认定义返回 0 的 byteCount.
- "FlushFunction" 用于支持写入流的过程. 它应该确保任何传递给 "WriteFunction" 的字节从内存缓存传输到流. 忽略该函数的结果. 该函数的格式是:
-
"FlushFunction"->Function[state,body;{result,newstate}] - 如果不提供 "FlushFunction",使用下列定义:
-
"FlushFunction"->Function[state,{Null,state}] - 处理错误的函数如下所示:
-
名称 参数 返回值 "ErrorTextFunction" {state,nbytes} {result,newstate} "ClearErrorFunction" {state} {ignored,newstate} - "ErrorTextFunction" 用于写入流的过程. 如果存在错误条件,它应该返回一条错误消息 String,如果没有错误则是 Null. Wolfram 语言将调用该函数,如果其他函数表明出现错误,例如,如果 "WriteFunction" 表明它写入比要求更少的字节. 默认定义返回 Null 的 result.
- 如果 "ErrorTextFunction" 返回一个错误字符串,并且被调用来清除错误状态,那么调用"ClearErrorFunction". 然后,"ErrorTextFunction" 应该返回 Null 直至有另一个错误从流中读取. 忽略该函数的结果. 强烈推荐提供 "ErrorTextFunction" 的流方法也应该提供一个 "ClearErrorFunction" 方法.
- "StreamPositionFunction" 用于支持 StreamPosition. 位置结果是一个指定使用 "WriteFunction" 写入流的字节数目的整数. 默认定义返回 -1.
- "OptionChangesFunction" 用于编辑来自由Options[st,Method] 返回的列表的流 st 的选项. 例如,流方法可能可以使用包含密码或者其他敏感安全数据的块作为选项. 默认情况下,Options 将返回该设置. 这个函数提供了删除该选项域的方法.
- 更改选项的函数如下:
-
名称 参数 返回值 "OptionChangesFunction" {state,options} {newoptions,newstate}
范例
Wolfram Research (2012),DefineOutputStreamMethod,Wolfram 语言函数,https://reference.wolfram.com/language/ref/DefineOutputStreamMethod.html.
文本
Wolfram Research (2012),DefineOutputStreamMethod,Wolfram 语言函数,https://reference.wolfram.com/language/ref/DefineOutputStreamMethod.html.
CMS
Wolfram 语言. 2012. "DefineOutputStreamMethod." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/DefineOutputStreamMethod.html.
APA
Wolfram 语言. (2012). DefineOutputStreamMethod. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/DefineOutputStreamMethod.html 年