Voici mes codes:peut ne pas correspondre à la bonne fonction
-record(user,{id,name,group,age}).
adult_section(U=#user{}) when U#user.age >=18 -> "allowed";
adult_section(_) -> "no permission".
il peut être travaillé avec:
>records_new:adult_section(#user{id=1,name='Ray',group=admin,age=10}).
output: "no permission"
mais quand j'essaie ceci:
> records_new:adult_section(#user{}).
"allowed"
Je n » t donner l'âge de l'utilisateur dans le deuxième ordre, pourquoi il peut être travaillé, pourquoi ne pas "no permission"
.
Vous devez toujours spécifier les valeurs par défaut * pour les enregistrements. Toujours. 'undefined' est une valeur qui causera presque toujours des résultats inattendus si vous courez juste et pensez que Erlang est comme Python ou Javascript (ou peu importe). Les typespecs et les valeurs par défaut saines sont critiques pour un code sans surprise - Erlang rend réellement ceci visuellement attrayant * et * très lisible. Cela dit, la réponse de @ Dogbert est exactement correcte: les atomes se comparent à des valeurs plus élevées que tous les entiers, donc 'non défini> = 18' est toujours' vrai'. – zxq9