Erlang:如何资产匹配IoDevice值?
我正在尝试编写一个打开文件的测试。File open返回以下格式的值:Erlang:如何资产匹配IoDevice值?,erlang,Erlang,我正在尝试编写一个打开文件的测试。File open返回以下格式的值: {ok,IoDevice}{error,Reason} IoDevice示例值为: 到目前为止,我已经尝试了以下方法(其中一些我不相信它们会成功……): ?资产匹配([],设备)。 ?资产匹配(“[]”,其名称)。 ?资产匹配(,设备)。%不会编译 还有几次测试,但我失败了 什么是匹配IoDevice模式的方法 是否有可能匹配正则表达式 谢谢 file:open/2始终返回包含两个元素的元组: 原子ok和处理文件的进程(
{ok,IoDevice}{error,Reason}
IoDevice示例值为:
到目前为止,我已经尝试了以下方法(其中一些我不相信它们会成功……):
?资产匹配([],设备)。
?资产匹配(“[]”,其名称)。
?资产匹配(,设备)。%不会编译
还有几次测试,但我失败了
什么是匹配IoDevice模式的方法
是否有可能匹配正则表达式
谢谢
file:open/2
始终返回包含两个元素的元组:
原子ok
和处理文件的进程(genserver)的pid
或:
原子错误和字符串。但由于字符串是创建列表的快捷方式,因此元组实际上包含atomerror
和一个列表
但是,设备
是一个原子,它永远不会匹配空列表,[]
,或两元素列表,“[]”
,这是创建列表的快捷方式[91,93]
您无法提前知道处理文件的进程的pid,因此无法尝试匹配特定的pid,但您可以断言您从文件:open/2
返回了{ok,}
。如果您想变得更细粒度,可以使用检查第二个元素is_pid/1
:
?assert(is_pid(File)).
您可以像这样手动创建pid:
list_to_pid("<0.4.1>") -> pid()
list_to_pid(“”)->pid()
list_to_pid("<0.4.1>") -> pid()