我有一个可以接受任何io_data的功能,因为它会通过http连接发送它。目前我有一个is_binary
保护条款但这个限制性太强了。
那么是否有一个保护条款可以检查是否有io_data?
e.g。
def do_the_stuff(content) when is_iodata(content) do
# e.g.
IO.puts(content)
end
答案 0 :(得分:2)
对此没有具体的警惕。通常库使用
when is_binary(iodata) or is_list(iodata)
答案 1 :(得分:1)
没有办法在警卫中捕获无效的碘值条款。 is_binary(content) or is_list(content)
尽可能接近。
如果您想在发送之前检查该术语是否为有效的iodata,您可以致电IO.iodata_length
,并检查它是否引发错误。这比将碘伏转换为二进制文件便宜,但确实会产生以前没有的成本。考虑到如果数据无效,底层库应该引发错误,这可能是不值得的。