【问题标题】:Top level assignment顶级分配
【发布时间】:2015-03-11 21:03:05
【问题描述】:

我试图在 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

您知道可以采取什么措施来规避这种情况吗?

【问题讨论】:

  • 如果你想知道,我在实际项目中有这样一行:EntityBehavior = behaviorOf(fun entityBehaviorGroup/1, fun entityNehavior/1).
  • @zxq9 这让我的问题有点没用,我应该删除它吗?
  • 如果你想清除它,那么当然——但我认为你不能接受一个公认的答案(它会搞砸史蒂夫,所以我认为系统会阻止它)。如果可以,您可能希望将其标记为重复项。无论如何,我很高兴您对您最初问题的答案有了深刻的理解。

标签: functional-programming erlang


【解决方案1】:

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

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

x() ->
    1.

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

对于像文字 1 这样简单的东西,您还可以定义一个预处理器宏,如下所示:

-define(X, 1).

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

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

【讨论】:

  • 认为可能是这种情况,但想确定一下。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 2019-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
相关资源
最近更新 更多