sách gpt4 ai đã đi

"Defimpl" trong "for" trong Elixir thực sự kiểm tra điều gì?

In lại 作者:行者123 更新时间:2023-12-04 17:47:48 32 4
mua khóa gpt4 Nike

“for”是否总是检查协议(protocol)中定义的每个函数中第一个参数的类型?

编辑(改写):
当协议(protocol)方法只有一个参数时,根据该单个参数的类型(直接或任意)找到实现。当协议(protocol)方法有多个参数时,使用哪一个来找到对应的实现?总是第一个吗?可以改变吗?

1 Câu trả lời

实现总是基于第一个参数来确定。

当您定义协议(protocol)时,将生成一个通用协议(protocol)模块。该模块中的所有 định nghĩa 子句将对具体函数执行委托(delegate),根据第一个参数的类型确定要调用的函数。

Elixir 源代码中发生这种情况的地方是 đây (其中第一个参数明确称为 t )Và đây (其中 t 被传递给 impl_for! 以获得转发函数调用的模块)。
defimpl 将生成名称符合 defprotocol 使用的内部约定的具体模块。因此可以确保函数调用将被委托(delegate)给适当的具体模块。

关于protocols - Elixir 中的 "for"中的 "defimpl"实际上检查了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27678420/

32 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com