0
는 내가 알고 싶어 분명히 record_io:print().
의 출력이 99
하지 2
을 했어야, 내가 제대로 기록에 값을 저장하는 방법은 무엇 출력Erlang : 레코드에 데이터를 올바르게 저장하고 검색하고 있습니까?
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>
에 다음 코드를 실행했습니다. 코드를 heres.
-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]).
나는 다른 방법으로 시도해도 작동하지 않았다.
수정 된 record_io의 코드입니다.
-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
커맨드 라인'Rec2 = Rec1 # memory {value = 99}'에 레코드를 사용하고 그것을 함수 호출'store (Rec2) '에 전달합니까? – pandoragami
새로 생성 된 구조체 – GabiMe
"S # memory {value = 99}"레코드가 S를 언 바인딩하고 store (S, Value)와 같은'S '를 전달할 수 없다.)'처음에. – pandoragami