2010-04-26 6 views
6

J'ai besoin de modifier les valeurs {lieu} et {autre_place} dans l'enregistrement op.Comment modifier un enregistrement en erlang?

#op{ 
    action = [walk, from, {place}, to, {other_place}], 
    preconds = [[at, {place}, me], [on, floor, me], 
       [other_place, {place}, {other_place}]], 
    add_list = [[at, {other_place}, me]], 
    del_list = [[at, {place}, me]] 
} 

Mais erlang ne permet pas de modifier les variables. Existe-t-il un type de données pour cela? Erlang ne vous permet pas de modifier les variables, c'est vrai.

+1

Veuillez formater votre code avec 4 espaces d'indentation. (Ou sélectionnez-les et ctrl + K.) –

+0

Quel est le problème, dawg? –

+6

Vous résolvez les problèmes NP-complets à Erlang de la même manière que vous résolvez d'autres problèmes, cela prend juste plus de temps. Veuillez au moins réitérer votre question. –

Répondre

19

Mais rien ne vous empêche de faire des copies modifiées d'une variable.

Compte tenu de votre dossier:

Rec = #op{ 
    action = [walk, from, {place}, to, {other_place}], 
    preconds = [[at, {place}, me], [on, floor, me], 
       [other_place, {place}, {other_place}]], 
    add_list = [[at, {other_place}, me]], 
    del_list = [[at, {place}, me]] 
} 

Vous pouvez obtenir efficacement une version modifiée comme ceci:

%% replaces the action field in Rec2 but everything else is the same as Rec. 
Rec2 = Rec#op{action = [walk, from, {new_place}, to, {new_other_place}]} 

Cela accomplira ce que vous semblez demander.

+0

Excellent. Je vous remercie! –

+0

votre accueil heureux d'aider. –

+0

ergh, m'a fait bousiller mon visage. Je renonce à Erlang – Acidic

Questions connexes