[erlang-questions] Add a field to a record
Marc Worrell
marc@REDACTED
Fri Sep 18 10:20:39 CEST 2015
Hi Lloyd,
That is a very common situation.
We have two tactics to handle that:
1) Just let it crash and then restart with the new definition
2) If (1) is not acceptable, use module/function that can “upgrade” your record.
Example of #2:
upgrade(#anything{} = Rec) -> Rec;
upgrade({anything, Field1, Field2}) -> #anything{field1=Field1, field2=Field2}.
And then, if you receive a record from old(er) code/nodes or a backing store, first “upgrade” your record before you do anything with it.
do_something(Rec0) ->
Rec = upgrade(Rec0),
… your code with Rec …
- Marc
> On 18 sep. 2015, at 00:16, lloyd@REDACTED wrote:
>
> Hello,
>
> I understand that it would be better to use maps if you anticipate adding fields to a record.
>
> But suppose you didn't anticipate and you've been merrily adding data to your db when you discover--- oops! I need another field.
>
> e.g. You have:
> -record anything, {
> field1,
> field2
> }
>
> and you discover that you really need:
> -record anything, {
> field1,
> new_field,
> field2
> }
>
> Is there a cunning trick or technique to make the change without losing data?
>
> Thanks,
>
> LRP
>
>
> *********************************************
> My books:
>
> THE GOSPEL OF ASHES
> http://thegospelofashes.com
>
> Strength is not enough. Do they have the courage
> and the cunning? Can they survive long enough to
> save the lives of millions?
>
> FREEIN' PANCHO
> http://freeinpancho.com
>
> A community of misfits help a troubled boy find his way
>
> AYA TAKEO
> http://ayatakeo.com
>
> Star-crossed love, war and power in an alternative
> universe
>
> Available through Amazon or by request from your
> favorite bookstore
>
>
> **********************************************
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
More information about the erlang-questions
mailing list