2010-04-26 15 views
6

Potrzebuję zmodyfikować wartości {miejsce} i {other_place} w zbiorze op.Jak zmodyfikować rekord w erlangu?

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

Ale erlang nie pozwala na modyfikowanie zmiennych. Czy istnieje typ danych?

+1

Proszę sformatować kod za pomocą 4 spacji wcięcia. (Lub wybierz je i ctrl + K.) –

+0

W czym problem, stary? –

+6

Rozwiązujesz problemy NP-zupełne w Erlang w taki sam sposób, jak rozwiązujesz inne problemy, to zajmuje więcej czasu. Proszę przynajmniej powtórzyć swoje pytanie. –

Odpowiedz

19

erlang nie pozwala modyfikować zmiennych, to prawda. Ale nic nie przeszkadza ci w tworzeniu zmodyfikowanych kopii zmiennej.

Biorąc pod uwagę Twój 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]] 
} 

Można skutecznie uzyskać wersję zmodyfikowaną tak:

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

To będzie osiągnąć to, co wydaje się być pytanie.

+0

Doskonałe. Dziękuję Ci! –

+0

Twoje powitanie z radością pomoże. –

+0

ergh, zmusił mnie do zepsucia mojej twarzy. Poddaję się Erlangowi – Acidic