Elixir:需求和导入之间的差异

时间:2017-09-29 16:20:42

标签: import elixir require

require和import有什么区别?

iex> require Integer
Integer
iex> Integer.is_odd(3)
true

iex> import List, only: [duplicate: 2]
List
iex> duplicate :ok, 3
[:ok, :ok, :ok]

似乎他们都做同样的事情......从其他模块中获取宏或函数。

2 个答案:

答案 0 :(得分:3)

来自documentation

  

每当我们想要从其他模块轻松访问函数或宏而不使用完全限定名称时,我们就会使用import。

  

请注意,importing模块会自动requires

因此,如果您import Integer,您可以直接致电is_odd,您不需要Integer.is_odd

答案 1 :(得分:1)

需要

根据此article

  

在编译过程中正在评估宏功能。如果要使用它,则需要先对其进行编译。这正是require的作用。

在后台,它还为所需模块提供了别名,这意味着您可以像使用as一样传递alias选项:

require TestModule, as: Test

导入

import指令允许您通过导入全部或某些功能/宏来跳过模块部分:

import IO, only: [puts: 1]

puts "Hello"

如前所述,它还会在后台调用require来首先对其进行编译。