"East" n'a pas de sens en erlang, il n'y a pas d'autre façon de faire. Il n'y a pas moyen de créer un getter entre deux objets (processus), tu es obligé de passer un message.
L'attente du retour est implémentée dans la réception de message elle-même:
Ici on envoie un message à l'objet (représenté par sa référence de processus
Quand on reçoit un message portant le même token, alors on sait que l'on a reçu dans le tuple les infos que l'on souhaitait. Et on renvoie ça.
L'attente du retour est implémentée dans la réception de message elle-même:
getSomeInfos(MyObjectPid) -> %% correspond à MyObject.getSomeInfos()
Token = make_ref(),
MyObjectPid ! {getInfos,{Token,self()}},
receive
{Token,Infos} -> Infos
end.
Ici on envoie un message à l'objet (représenté par sa référence de processus
MyObjectPid
). Le message comporte un token et self()
qui correspond à la référence de processus du code en cours d'exécution (l'appelant dans notre cas), permettant à l'autre objet de nous envoyer un message de retour. Quand on reçoit un message portant le même token, alors on sait que l'on a reçu dans le tuple les infos que l'on souhaitait. Et on renvoie ça.