我正在阅读一些非常基础的教程,因为我刚从网络背景开始使用Erlang。我有以下this forum post文件:
-module(calc).
-export([test/0]).
test() ->
X = io:get_line('X: ').
但是,我没有得到预期的结果:
1> c(calc).
calc.erl:7: Warning: variable 'X' is unused
{ok,calc}
2> calc:test().
X: test
"test\n"
3> X.
* 1: variable 'X' is unbound
不应该X = io:get_line('X: ').
将X绑定到用户输入?
答案 0 :(得分:2)
X
仅在test
函数中可见,并且Erlang中没有全局变量。要在函数外部使用的所有值都需要返回给函数调用者。
碰巧你的test
函数会返回X
的值作为函数结果(赋值是表达式=>绑定值是结果,函数的最后一个表达式返回为功能结果)。
因此,在shell中,您可以X=calc:test().
将X
绑定到结果。
变量问题,特别是在使用shell时,它们是单一赋值。如果您在shell中运行X=calc:test().
两次,但键入不同的数据,则第二次会出错!
在shell中使用f(X).
使X
再次解除绑定。