Est-il un équivalent de Python `pass` en c++ std11?
Je veux une instruction qui ne fait rien, mais peut être utilisé dans les endroits nécessitant une déclaration. Pass: http://docs.python.org/release/2.5.2/ref/pass.html
Edit: Viens de voir: Comment exécuter un no-op en C/C++?
#define pass (void)0
Résolu mon problème. Merci!
Le problème, c'est votre abus de l'opérateur conditionnel comme un
comment utilisez-vous passer dans le tertiaire consolidés(ses une erreur en python aussi) et plus important encore, pourquoi voudriez-vous faire cela au lieu de simplement
C'est "ternaire", pas de "tertiaire"!
Non, c'est la conditionnel de l'opérateur. Qu'il se trouve être le seul qui prend trois arguments qui conduit les gens à l'appeler "le" opérateur ternaire, ce qui manque le point.
Non, les gens aiment à rappeler que ce n'est pas une bonne excuse.
if
. La condition est une expression qui produit une valeur, pas une abréviation pour un if
vous aurez beaucoup de différents problèmes avec un code similaire à celui en C++: x > y ? getInt() : getString()
par exemple. Plutôt que de traduire votre code, vous devez apprendre les expressions idiomatiquescomment utilisez-vous passer dans le tertiaire consolidés(ses une erreur en python aussi) et plus important encore, pourquoi voudriez-vous faire cela au lieu de simplement
if (condition) do_something();
C'est "ternaire", pas de "tertiaire"!
Non, c'est la conditionnel de l'opérateur. Qu'il se trouve être le seul qui prend trois arguments qui conduit les gens à l'appeler "le" opérateur ternaire, ce qui manque le point.
Non, les gens aiment à rappeler que ce n'est pas une bonne excuse.
OriginalL'auteur Tommy | 2013-12-04
Vous devez vous connecter pour publier un commentaire.
Point-virgule, ou des parenthèses vides doivent travailler pour vous
Par exemple Python
Pourrait se traduire pour le C++ suivant
Ou
Peut-être pour l'opérateur ternaire cas, vous pouvez faire:
Comment étais-je censé savoir que vous pensiez à l'enseignement supérieur? Le contexte a son importance, à la fois dans la question, en demandant et en C++.
FWIW,
pass
ne fonctionne pas dans un python expression conditionnelle soit ...1 if True else pass
est pas valide.Bon, eh bien, si vous voulez poser la question sans modificateurs, alors non,
C++
ne pas avoir quelque chose commepass
dans tous sémantique des constructions.Nope...
OriginalL'auteur Prashant Kumar
Pas. Vous n'avez pas
pass
ou équivalent mot-clé. Mais vous pouvez écrire le code équivalent sans aucune de ces mots clés.devient
et
devient
Dans un contexte différent, une syntaxe différente pourrait être utile. Par exemple,
devient
Comme vous pouvez le voir, dans ce contexte, vous avez à écrire
using
à hérite des constructeurs de la classe de base. En Python,pass
fait la même chose, dans un même contexte.Espère que ça aide.
OriginalL'auteur Nawaz
Comme cela a été dit dans les commentaires, ce n'est pas pris en charge parce qu'il n'a pas de sens. L'opérateur conditionnel est conçu pour correspondre à l'un des deux opérandes. De deux. Pas un seul.
C'est pas bien d'abuser de l'opérateur à effectuer certains conditionnelle d'action dans un seul de ces cas. En fait, il est préférable que ni l'opérande d'effets secondaires que ce soit. Ce n'est pas un "faire quelque chose" de construire, mais un "donne-moi une de deux choses l'une" de construire.
À cet égard, si Python ont été à l'appui de ce que vous dites, il prend en charge, alors il serait cassé où C++ n'est pas. Comme il arrive, Python n'a pas de support, soit, après tout.
Écrire un
if
déclaration, au lieu de:x ? y void1() : void2();
est valide en c++. En outre, il fait la même chose dans 1 ligne de votre 6. Je n'ai pas encore entendu un argument convaincant pourquoi ne pas l'utiliser: vous avez dit "C'est pas bien d'abuser de l'opérateur à effectuer certains conditionnelle d'action dans un seul de ces cas." mais pas n'importe quelles raisons.Il peut être valable, mais c'est toujours une mauvaise idée.
Oui, il est valide. Qui n'est pas une bonne idée, ni l'usage de l'opérateur. Vous semblez être obstinément en insistant sur l'écriture incertaine, difficile à maintenir le code.
En un mot, le but de la sémantique sont différents. Le
if
/else
bloc exprime une intention de choisir entre les deux actions, où l'opérateur conditionnel exprime une intention de choisir entre les deux . C'est pourquoi l'opérateur conditionnel renvoie une valeur, tandis que leif
/else
bloc ne fonctionne pas.Je n'étais pas en train de défendre quoi que ce soit. J'ai été d'énoncer un fait. Et je l'ai déjà dit ce que Ian dit dans ma réponse:
This is not a "do something" construct, but a "give me one of two things" construct.
OriginalL'auteur Lightness Races in Orbit
Je pense qu'en C++, il suffit d'une ligne vide (;) sera l'équivalent de 'pass'
OriginalL'auteur bboonn
Une approche pourrait être:
Fonctions: faire de la "proto" de retour de la fonction nulle et l'utilisation d'un ';' comme certains l'ont suggéré ci-dessus
Boucles: bien sûr, l'utilisation de pause
Autre chose: Dans mon expérience, je vais quitter une fonction ou d'une section de code commenté. Parfois, je vais aussi ajouter un petit notée résumé pour la future édition.
La façon dont vous vous approchez de ce devrait juste être sur ce qui est à l'aise. Il suffit de faire ce que vous voulez que logiquement œuvres.
OriginalL'auteur Brandon Williams