Elixir 要求

2023-12-15 14:27 更新

Elixir提供了宏作為元編程的機(jī)制(編寫能生成代碼的代碼).

宏是在編譯時執(zhí)行和擴(kuò)展的代碼塊.這意味著,為了使用一個宏,我們要保證它的模塊和實現(xiàn)都在編譯過程中可用.這通過?require?命令完成:

iex> Integer.is_odd(3)
** (CompileError) iex:1: you must require Integer before invoking the macro Integer.is_odd/1
iex> require Integer
Integer
iex> Integer.is_odd(3)
true

在Elixir中,Integer.is_odd/1被定義為一個宏,所以它可以被用作一個守衛(wèi).這意味著,為了調(diào)用Integer.is_odd/1,我們需要先要求Integer模塊.

通常一個模塊不需要在使用前被要求,除非我們想要使用那個模塊中的宏.試圖調(diào)用一個沒有載入的宏將會拋出一個錯誤.注意像alias命令一樣,require也確定了語法范圍.我們將在下一章中更多地討論宏.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號