Comment savoir si l'appel de $ cast est d'une fonction ou d'une tâche. Comment l'appel de chacun différerait-il? Une chose que je comprends est qu'avec l'appel de la fonction, je serai en mesure d'utiliser assert(). Mais à part ça, qu'est-ce qui nous dit si l'appel est de la fonction $ cast ou de la tâche $ cast? Dans les deux cas, nous ferions quelque chose comme $ cast (pkt, pkt1);
LRM donne la syntaxe des $ fonte fonction
function int $cast(singular dest_var, singular source_exp);
et de la tâche $ jeté comme
task $cast(singular dest_var, singular source_exp);
et poursuit en expliquant que
Utilisation de $ cast comme tâche ou une fonction détermine comment les affectations invalides sont gérées.
Lorsqu'il est appelé en tant que tâche, $ cast tente d'affecter l'expression source à la variable de destination. Si l'affectation est non valide, une erreur au moment de l'exécution se produit et la variable de destination reste inchangée.
Lorsqu'elle est appelée en tant que fonction, $ cast tente d'affecter l'expression source à la variable de destination et renvoie 1 si la conversion est autorisée. Si la distribution échoue, la fonction n'effectue pas l'affectation et renvoie 0. Lorsqu'elle est appelée en tant que fonction, aucune erreur d'exécution ne se produit et la variable de destination reste inchangée.
Veuillez expliquer.
ou est-ce que LRM essaie vaguement de dire que l'utilisation de assert() ou si le bloc autour du cast $ choisirait la fonction $ cast, sinon la tâche cast? –