2010-04-26 6 views
6

Necesito modificar los valores {place} y {other_place} en el registro op.¿Cómo modifico un registro 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]] 
} 

Pero erlang no permite modificar las variables. ¿Hay un tipo de datos para eso?

+1

Formatee su código con 4 espacios de sangría. (O selecciónalos y ctrl + K.) –

+0

¿Cuál es el problema, dawg? –

+6

Solucionas problemas de NP-complete en Erlang de la misma forma que resuelves otros problemas, solo lleva más tiempo. Por favor, al menos retitule su pregunta. –

Respuesta

19

erlang no le permite modificar variables, es cierto. Pero nada le impide hacer copias modificadas de una variable.

Dada su registro:

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

, usted puede obtener eficazmente una versión modificada de este modo:

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

Esto logrará lo que parece estar pidiendo.

+0

Excelente. ¡Gracias! –

+0

su bienvenida encantado de ayudar. –

+0

ergh, me hizo arruinar mi cara. Me rindo en Erlang – Acidic

Cuestiones relacionadas