2015-01-13 50 views
0

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

你有什么想法可以做些什么来解决这个?

+0

如果您想知道,我在真实项目中有这样的一行:'EntityBehavior = behaviorOf(有趣的entityBehaviorGroup/1,有趣的entityNehavior/1)。' – seequ

+0

这里有一个相关的讨论:http://stackoverflow.com/questions/25770042/variable-in-erlang/25775401#25775401 – zxq9

+0

@ zxq9这让我的问题有点无用,应该删除它吗? – seequ

回答

3

Erlang中没有全局变量。您可以使用函数来代替,像这样的例子:

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

x() -> 
    1. 

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

对于作为文字1简单的事情,你也可以定义一个预处理宏,就像这样:

-define(X, 1). 

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

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

+0

认为这可能是这种情况,但想确保。谢谢。 – seequ