我们说我有一个模块:
defmodule Request do
def send(url, body \\ "", headers \\ [], opts \\ []) do
.. some code
end
... other functions ...
end
我只需要导入send
函数,所以我会写这样的东西:
import Request, only: [send: 4]
但问题是编译器会给我一个错误,说如果我使用send\1
函数只传递url参数并接受其余参数的默认值,则send
未定义
所以我想知道是否有办法导入整个send
函数而不导入send\1
,send\2
和send\3
在Request.send
中使用通过模块本身访问它的函数可能更有意义,但我仍然对答案感兴趣
答案 0 :(得分:3)
您无法在导入时调用send/1
(正如您所指定的那样)。
您的选择是:
import Request
import Request: :functions
import Request, only: [send: 1, send: 2, send: 3, send: 4]
import Request, except: [notsend: 1, also_notsend: 2]
您可以在https://hexdocs.pm/elixir/Kernel.SpecialForms.html#import/2
阅读文档