Dans mes principes de classe de programmation, nous parlons de différentes méthodes d'appel. Certains nous avons discuté étaient: p>
Je ne trouve pas d'exemple de la façon dont l'appel passe le nom fonctionne. Quelqu'un se soucie de me donner un exemple? Je pense que lorsque vous prenez un fichier XML comme entrée, c'est similaire em> à appeler par nom. Quelqu'un pourrait-il me donner un exemple plus traditionnel? p>
3 Réponses :
Je vais travailler dans un langage de programmation hypothétique. Supposons que nous avons une fonction appelons maintenant avec quelques arguments: p> Nous allons donc imprimer 456 à l'écran et renvoyer 457. Dans une autre stratégie d'évaluation, nous évaluerons les paramètres de fonction (impression 123 et 456 à l'écran du processus), puis remplacez 456 pour C'est artificiel, mais j'espère que vous obtenez l'idée. Tout est question de substitution. P> p> p (x) code> qui imprime x puis le renvoie. Maintenant, définissons une fonction:
x code> et < Code> y code> va être substitué aux paramètres, de sorte que l'appel à
foo code> ci-dessus va résulter: p>
y Code> Dans l'organe de la fonction, renvoyant finalement 457. P>
alors appellerait par nom aussi appeler appel par référence? valeur? Quelque chose de spécifique?
@sixtyfootersDude, cette phrase a fait mal au cerveau. Soin de le réindiquer?
Sûr. Disons que vous avez ceci ( appel par nom B>): int x = 0; foo (t (x)); imprimer (x); code> s'il était aussi i> "appeler par valeur", cela serait imprimé 0. Si c'était aussi i> "appeler par référence" IT> pourrait i> imprimer quelque chose d'autre.
Gian! Revenez et répondez-lui!
Je suis toujours assez certain que je ne comprends pas la question. Dans un scénario d'appel par référence, il est toujours possible que la valeur référencée puisse être modifiée, de sorte que la sémantique attendue de la réussite de nom ne tient pas tout à fait de contrôle. Outre cela, je ne suis toujours pas sûr de ce qui est demandé.
http://fr.wikipedia.org/wiki/evaluation_strategy#call_by_name p>
Dans la valeur de l'appel, vous évaluez les arguments, récupérant les valeurs qui sont ensuite transmises à la fonction.
Dans l'appel par nom, vous substituez dans le corps de la fonction toutes les références aux arguments par leur code em> utilisé pendant l'appel. Ensuite, évaluez le corps, vous évaluerez les arguments.
foo (barre ()) code> est évalué comme
arg = bar (); code>, puis foo (arg) est appelé, et dans le corps de la fonction, cette nouvelle allouée argument La variable est accessible, modifiable, ... p>
FOO (barre ()) code> avec
foo (arg) {retour arg; } code> sera évalué comme
foo (arg) {barre de retour (); } code> p>
appel par nom strong> Travailler comme Voici un exemple simple p>
J'ai vu cet exemple ailleurs, vous devriez citer
Je ne connais pas d'exemples modernes d'appel par nom. Ce fut une très mauvaise idée dans Algol 60 et je doute que cela ait changé.
Quel genre d'exemple cherchez-vous? Un exemple de langage qui utilise appelé par nom ou un exemple de ce que l'évaluation d'une expression utilisant un nom appelé ressemblerait?
@ SEPP2K, les deux pourraient être utiles. Je ne suis pas sûr, mais de ce que j'ai compris jusqu'à présent, cela ressemble à une jolie idée morte (corrigez-moi si je me trompe), mais il est inclus dans le matériel de cours (peut-être pour des raisons historiques?)