6
votes

Support de langue moderne + = mais pas && =

la plupart (mais je connais seulement un petit nombre, il suffit de ne pas être difficile sur ce point) Langues de haut niveau Prenez en charge plusieurs opérateurs d'affectation différents.

x &&= testA(); // perform test A/B/C/D stop on first failure.
x &&= testB();
x &&= testC();
x &&= testD();


1 commentaires

J'avais exactement cette pensée aujourd'hui, car à Lua, && est le mot et , donc je me suis demandé comment ils avaient fait && = < / Code> et réalisa qu'il n'y a pas de && = , en Lua ou dans la plupart des langues.


5 Réponses :


-1
votes

Quand auriez-vous jamais besoin de cela? Généralement, lorsque vous effectuez des opérations booléennes, vous ne mettez pas à jour les valeurs, mais vous informez plutôt quelque chose pour une opération unique. Votre exemple n'est pas très réaliste; Il n'y a pas beaucoup de cas dans lesquels vous le feriez vraiment.

En outre, dans toutes les langues que je peux penser à la mission augmentée n'existe que pour les opérations biteux et arithmétiques, jamais booléen opérations.


1 commentaires

C'est très pratique lorsque le côté gauche n'est pas booléen, mais a la vérité .



1
votes

Perl soutient cela. Il est très pratique de pouvoir écrire: xxx


1 commentaires

Je pensais que Perl soutient chaque combinaison possible de chaque opérateur et de tout le reste du monde?



1
votes

La première raison est que les langues vous permettent d'atteindre votre objectif en utilisant le formulaire "Verbose". Après cela, il est fronçalisé lors de l'ajout d'opérateurs pour chaque cas inhabituel. Une partie de la raison est que le concepteur de langue doit décider des précéditions de l'opérateur judicieusement. Ce n'est pas aussi simple qu'il ressemble - prenez C comme exemple qui gêne des précéditions intuitives sur & , | , && et || .

La deuxième raison est que la plupart des langues modernes soutiennent une forme d'exception. Votre cas peut être facilement réécrit en utilisant des exceptions avec le bonus ajouté, que des informations sur la défaillance peuvent être transmises plus facilement à l'appelant.

Par conséquent, le besoin d'opérateur spécial comme celui-ci est assez petit.

Oh, j'ai failli manqué la raison la plus importante: c ne les a pas. Ce que cela signifie est décrit mieux dans bref, incomplet et surtout une mauvaise histoire des langages de programmation :

1970 - Niklaus Wirth crée Pascal, une langue procédurale. Critiques dénoncer immédiatement Pascal car il utilise la syntaxe "x: x + y" au lieu de plus familier C-like "x = x + y". Cette critique arrive malgré le fait que c n'a pas encore été inventé.

1972 - Dennis Ritchie invente un pistolet puissant qui tire vers l'avant et en arrière simultanément. Non satisfait du nombre de décès et muimings permanents de cette invention, il invente C et UNIX.

Cela montre simplement que c est toujours un attracteur que vous ne pouvez pas échapper.


1 commentaires

Je ne comprends toujours pas pourquoi il y a un "essentiellement faux" dans ce titre. : P



1
votes

&& et || sont spéciaux dans le sens où ils sont, dans la plupart des langues, les seules constructions qui fournissent une évaluation courte de circuits afin que cela ait un peu de sens pour eux être traité différemment des opérateurs normaux, non court-circuit, en ce qui concerne les formes abrégées. Le moyen le plus simple d'éviter la confusion de && = court-circuit ou non ne comprend pas en premier lieu.


0 commentaires

0
votes

Contrairement à + = et amis, && = ne correspond pas à une seule instruction matérielle. C'est une sorte de test ou clair.


0 commentaires