如何导入具有不同数量的参数的函数

时间:2015-12-03 12:41:43

标签: elixir

我们说我有一个模块:

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\1send\2send\3

Request.send中使用通过模块本身访问它的函数可能更有意义,但我仍然对答案感兴趣

1 个答案:

答案 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

阅读文档