顶级分配

Top level assignment

我试图在 Erlang 中使用高阶函数创建一个函数。令我惊讶的是,这似乎不太对劲。这是我遇到的错误的简化示例。

-module(test).
-export([main/0]).

X = 1.

main() ->
    io:format("~p~n", [X]).

并且在 erl 中:

> c(test).
test.erl:4: syntax error before: X
test.erl:7: variable 'X' is unbound
error

您是否知道可以采取什么措施来避免这种情况?

Erlang 中没有全局变量。您可以改用函数,例如:

-module(test).
-export([main/0]).

x() ->
    1.

main() ->
    io:format("~p~n", [x()]).

对于像文字这样简单的东西 1 你也可以定义一个预处理器宏,像这样:

-define(X, 1).

main() ->
    io:format("~p~n", [?X]).

但鉴于您的问题提到了高阶函数,您可能不想使用预处理器。