当前位置 : 主页 > 大数据 > 区块链 >

协议 – Elixir中“defimpl”中的“for”实际检查了什么?

来源:互联网 收集:自由互联 发布时间:2021-06-22
“for”是否始终检查协议中定义的每个函数中第一个参数的类型? 编辑(改述): 当protocol方法只有一个参数时,根据这个参数的类型(直接或任意)找到实现.当protocol方法有多个参数时,哪一
“for”是否始终检查协议中定义的每个函数中第一个参数的类型?

编辑(改述):
当protocol方法只有一个参数时,根据这个参数的类型(直接或任意)找到实现.当protocol方法有多个参数时,哪一个用于查找相应的实现?它总是第一个吗?可以改变吗?

始终根据第一个参数确定实现.

定义协议时,将生成通用协议模块.该模块中的所有def子句将执行具体函数的委派,根据第一个参数的类型确定要调用的函数.

发生这种情况的Elixir源中的位置是here(其中第一个参数明确地称为t)和here(其中t被传递给impl_for!以获得转发函数调用的模块).

defimpl将生成具体模块,其名称符合defprotocol使用的内部约定.因此,确保将函数调用委托给适当的具体模块.

网友评论