Erlang - Macro
Macro thường được sử dụng để thay thế mã nội tuyến. Trong Erlang, macro được xác định thông qua các câu lệnh sau.
- -define (Hằng số, Thay thế).
- -define (Func (Var1, Var2, .., Var), Replacement).
Sau đây là một ví dụ về macro sử dụng cú pháp đầu tiên:
Thí dụ
-module(helloworld).
-export([start/0]).
-define(a,1).
start() ->
io:fwrite("~w",[?a]).
Từ chương trình trên, bạn có thể thấy rằng macro được mở rộng bằng cách sử dụng dấu '?' Biểu tượng. Hằng số được thay thế bằng giá trị được xác định trong macro.
Đầu ra của chương trình trên sẽ là:
Đầu ra
1
Ví dụ về macro sử dụng lớp hàm như sau:
Thí dụ
-module(helloworld).
-export([start/0]).
-define(macro1(X,Y),{X+Y}).
start() ->
io:fwrite("~w",[?macro1(1,2)]).
Đầu ra của chương trình trên sẽ là:
Đầu ra
{3}
Các câu lệnh bổ sung sau đây có sẵn cho macro:
undef(Macro)- Hoàn tác xác định macro; sau đó bạn không thể gọi macro.
ifdef(Macro) - Chỉ đánh giá các dòng sau nếu Macro đã được xác định.
ifndef(Macro) - Chỉ đánh giá các dòng sau nếu Macro là không xác định.
else- Được phép sau câu lệnh ifdef hoặc ifndef. Nếu điều kiện sai, các câu lệnh sau khác được đánh giá.
endif - Đánh dấu phần cuối của một câu lệnh ifdef hoặc ifndef.
Khi sử dụng các câu lệnh trên, nó nên được sử dụng theo cách thích hợp như trong chương trình sau.
-ifdef(<FlagName>).
-define(...).
-else.
-define(...).
-endif.