Erlang:将数据正确地存储在记录中并检索它?
我用输出运行了以下代码Erlang:将数据正确地存储在记录中并检索它?,erlang,record,Erlang,Record,我用输出运行了以下代码 Erlang R16B (erts-5.10.1) [smp:8:8] [async-threads:10] Eshell V5.10.1 (abort with ^G) 1> rr(record_io). [memory] 2> record_io:store(99). stored: 2 ok 3> record_io:print(). stored: 2 ok 4> 我想知道的是如何正确地将值存储到记录中,显然,record
Erlang R16B (erts-5.10.1) [smp:8:8] [async-threads:10]
Eshell V5.10.1 (abort with ^G)
1> rr(record_io).
[memory]
2> record_io:store(99).
stored: 2
ok
3> record_io:print().
stored: 2
ok
4>
我想知道的是如何正确地将值存储到记录中,显然,record\u io:print().
的输出应该是99
,而不是2
。这是密码
-module(record_io).
-export([store/1, print/0]).
-record(memory, {value}).
store(Value) ->
#memory{ value = Value},
io:format("stored: ~p~n",[#memory.value]).
print() ->
io:format("stored: ~p~n",[#memory.value]).
我试过另一种方法,但也没用
4> c(record_io).
record_io.erl:6: Warning: a term is constructed, but never used
{ok,record_io}
5> rr(record_io).
[memory]
6> record_io:store(S,10).
* 1: variable 'S' is unbound
7>
已修改记录的代码
-module(record_io).
-export([store/2, print/1]).
-record(memory, {value}).
store(S,Value) ->
S#memory{ value = Value},
io:format("stored: ~p~n",[S#memory.value]),
S.
print(S) ->
io:format("stored: ~p~n",[S#memory.value]).
编辑:解决方案
代码
-module(record_io).
-export([store/1, print/1]).
-record(memory, {value}).
store(Value) ->
Rec2 = #memory{ value = Value},
io:format("stored: ~p~n",[Rec2#memory.value]),
Rec2.
print(S) ->
io:format("stored: ~p~n",[S#memory.value]).
命令行
Rec = record_io:store(99).
record_io:print(Rec).
stored: 99
{memory,99}
stored: 99
ok
不能在Erlang中修改记录。只创建新的。请参见我是否使用命令行
Rec2=Rec1#memory{value=99}
上的记录并将其传递到函数调用store(Rec2)。
只需从“store”函数返回新创建的结构,我尝试过,但记录S#memory{value=99}
使S解除绑定,并且我无法传递S
类似store(S,Value)
首先。