Elixir 1.5参考手册
Protocols
Inspect
该Inspect
协议负责将任何Elixir数据结构转换为代数文档。然后将此文档格式化为漂亮打印格式或常规格式。
该inspect/2
函数接收要检查的实体,然后接收由结构表示的检查选项Inspect.Opts
。
检查使用可用的功能完成Inspect.Algebra
。
实例
很多时候,检查结构可以根据现有实体的功能来实现。例如,这是MapSet
的inspect
实现:
defimpl Inspect, for: MapSet do
import Inspect.Algebra
def inspect(dict, opts) do
concat ["#MapSet<", to_doc(MapSet.to_list(dict), opts), ">"]
end
end
该concat/1
函数来自Inspect.Algebra
并将代数文档连接在一起。在上面的例子中,它连接了字符串"MapSet<"
(所有字符串都是有效的代数文档,它们在打印时保持其格式),返回的文档Inspect.Algebra.to_doc/2
和另一个字符串">"
。
由于常规字符串是代数文档中的有效实体,检查的实现可能会简单地返回一个字符串,尽管这样可以避免任何漂亮的打印。
错误处理
如果在检查结构时出现错误,则elxir将引发ArgumentError
错误,并将自动返回到用于打印结构的原始表示形式。
但是,您可以通过直接调用检查实现来访问基础错误。例如,测试检查。在上面的MapSet中,您可以以以下方式调用它:
Inspect.MapSet.inspect(MapSet.new, %Inspect.Opts{})
类型
t()
功能
inspect(term, opts)
t()
t() :: term
inspect(term, opts)
Protocols相关
Elixir 基于 Erlang 虚拟机的函数式、面向并行,是一种较好的编程语言。它以 Erlang 为基础,支持分布式、高容错、实时应用程序的开发。
主页 | https://elixir-lang.org/ |
源码 | https://github.com/elixir-lang/elixir |
版本 | 1.5 |
发布版本 | 1.5.2 |