2010-04-26 10 views
6

Ich brauche die Werte {place} und {other_place} im Op-Record zu ändern.Wie ändere ich einen Datensatz in 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]] 
} 

Aber erlang erlaubt keine Änderung von Variablen. Gibt es dafür einen Datentyp?

+1

Bitte formatieren Sie Ihren Code mit 4 Leerstellen. (Oder wählen Sie sie und Strg + K.) –

+0

Was ist das Problem, Kumpel? –

+6

Sie lösen NP-vollständige Probleme in Erlang genauso wie Sie andere Probleme lösen, es dauert nur länger. Bitte wiederholen Sie zumindest Ihre Frage. –

Antwort

19

Erlang lässt Sie Variablen nicht ändern, es ist wahr. Aber nichts hindert Sie daran, modifizierte Kopien einer Variablen zu erstellen.

Angesichts Ihrem Rekord:

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]] 
} 

Sie können effektiv eine modifizierte Version wie so erhalten:

%% 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}]} 

Dies wird erreichen, was Sie scheinen zu fragen werden.

+0

Ausgezeichnet. Vielen Dank! –

+0

Ihr Willkommen froh zu helfen. –

+0

ergh, ließ mich mein Gesicht vermasseln. Ich gebe Erlang auf – Acidic

Verwandte Themen