Updating nested records in a single-line expression?

Rachwal Waldemar-AWR001 <>
Fri Oct 8 09:51:28 CEST 2004


I meant one-line reassign without any intermediate read.
Slight modification of reassign statement of your example and it works fine
as well.
Ance again thanks for your help.
Best regards,
Waldemar.

%%%%%%%%%%%%%%%%%%%%

-module(recs).
-record(arec,{a,b}).
-record(brec,{c,d}).
-export([test/0]).

test() ->
    %%assignment statement
    Arec = #arec{a=hello,b=#brec{c=world,d=again}},

    %%reassign
    Arec2 = Arec#arec{a="hello",b=(Arec#arec.b)#brec{c="world",d="again"}},

    io:format("~p\n",[{Arec,Arec2}]).

-----Original Message-----
From: Peter Lund [mailto:] 
Sent: Friday, October 08, 2004 8:54 AM
To: Rachwal Waldemar-AWR001; 
Subject: SV: Updating nested records in a single-line expression?


do you mean:

-module(recs).
-record(arec,{a,b}).
-record(brec,{c,d}).
-export([test/0]).
%%and then...
test() ->
    %%assignment statement
    Arec = #arec{a=hello,b=#brec{c=world,d=again}},

    %% read
    #arec{a=A,b=Brec=#brec{c=C,d=D}} = Arec,

    %%reassign
    Arec2 = Arec#arec{a="hello",b=Brec#brec{c="world",d="again"}},

    io:format("~p\n",[{Arec,Arec2}]).

Tested and works!

best regards,
Peter Lund

> -----Ursprungligt meddelande-----
> Från:  
> [mailto:]För Rachwal Waldemar-AWR001
> Skickat: den 7 oktober 2004 21:23
> Till: 
> Ämne: Updating nested records in a single-line expression?
>
>
> Hi!
>
> Accessing data from nested records is fairly clear.
> However, I experienced notational problems trying to update such 
> records in a single line expression.
> Suppose we have a protocol where messages consist of elements
> which in turn
> are collections of fields being simple values or form further nested
> structures.
> When I modify any nested field I have to get a modified copy
> of the message,
> but how to get it in a single expression without additional variables?
> Is it doable?
> Or, maybe I have to deal with such messages in different way
> rather than
> model as records and then access/update these records directly?
>
> Thanks for any help,
> Waldemar.



More information about the erlang-questions mailing list