我目前正在阅读learn you some Erlang,并且我已经实施了以下示例:
get_weather(City) ->
Weather = [{toronto, rain},
{montreal, storms},
{london, fog},
{paris, sun},
{boston, fog},
{vancouver, snow}],
[LocationWeather || {Location, LocationWeather} <- Weather, Location =:= City].
这个例子工作正常,但如果我想在函数之外声明变量Weather
,我会收到错误:
solve.erl:5: syntax error before: Weather
solve.erl:2: function get_weather/1 undefined
有没有办法在函数范围之外声明变量?我可以通过头文件来完成吗?
答案 0 :(得分:4)
简答:不。变量只能在函数中定义。
实现函数的另一种方法是在函数头中使用模式匹配:
array ( '00' => 'x', 11 => 'y',)
通过这种方法,您根本不需要变量。您还可以将结果作为单个原子获得,我认为这比在列表中返回单个原子更好。
答案 1 :(得分:2)
另一种方法是定义一个返回数据列表的函数:
weather_data() -> [{toronto, rain},
{montreal, storms},
{london, fog},
{paris, sun},
{boston, fog},
{vancouver, snow}].
get_weather() ->
[LocationWeather || {Location, LocationWeather} <- weather_data(), Location =:= City].