Quelle est la meilleure façon en F # d'écrire une condition si non?F # si pas de condition
En ce moment, je l'écris comme ceci:
if condition <> true then do
est-il un autre moyen plus court pour l'écrire? Comme en utilisant le! opérateur?
Quelle est la meilleure façon en F # d'écrire une condition si non?F # si pas de condition
En ce moment, je l'écris comme ceci:
if condition <> true then do
est-il un autre moyen plus court pour l'écrire? Comme en utilisant le! opérateur?
OCaml, vous pouvez utiliser le mot-clé "non":
if not condition then ...
fonctionne aussi avec un peu de chance F #.
+1: oui, fonctionne en F #. Entourer les conditions avec des parens comme nécessaire. – Juliet
C'est le cas. Soyez prudent avec la priorité de l'opérateur. –
AH! J'ai essayé cela plus tôt, mais j'ai échoué à comprendre l'erreur qu'il me disait. Maintenant, cela fonctionne bien en utilisant le mot-clé non. Merci beaucoup! –
Je ne connais pas F # mais en C, en utilisant le! opérateur j'écrire:
if(!condition) { ... }
qui est le même que
if(condition == false) { ... }
'!' Est l'opérateur pour obtenir la valeur d'une cellule de référence dans F #. vous avez besoin de la fonction "not". –
@Tomas Petricek, j'ai commencé par "Je ne sais pas F #". J'ai vu qu'il l'a fait si la condition <> vrai alors ... alors j'ai deviné "peut-être qu'il ne sait pas qu'il peut nier la condition et obtenir le même résultat" – BlackBear
Bon point, même si je pense que ça pourrait faire avec un montage pour le faire abondamment clair. – Orbling
Il y a le not function, mais il fonctionne uniquement avec des variables booléennes.
On peut donc dire:
if (not condition) then do
Mais cela ne fonctionne pas avec d'autres types comme dans les langues de style C.
Ne pas utiliser !
par accident, car il est toujours un opérateur en F #, il s'agit d'un dereference on a mutable reference cell. Voir le full operator documentation.
si l'on considère que ne pas est également une fonction, vous pouvez diriger votre condition en elle pour éviter entre parenthèses comme ceci:
if not <| condition param1 param2 then ...
raison en est si votre fonction de condition prend des arguments, vous n'avez pas besoin faire
not (condition param1 param2)
il est probablement un peu plus propre de le faire la première manière, car il semble f # est en faveur des tuyaux au lieu de parenthèses pour priorité de l'opérateur.
Wow! Merci pour le conseil à ce sujet. Je n'avais aucune idée que tu pouvais utiliser la pipe pour faire ça. –
J'aime ça, 'sinon <| condition param1 param2 then ... 's'inscrit bien dans la brièveté de F #, car les deux sont facilement typés, lus et modifiés. Les parenthèses sont donc OO ;-) – TaterJuice
Dupliquer: http://stackoverflow.com/questions/239888/logical-negation-operator-in-f-equivalent – Orbling
Désolé pour le doublon. Je n'ai pas vu ça quand je cherchais. –
Tout va bien, c'est une question importante, à cause de la mise en garde dans ma réponse, un peu un piège pour ceux qui ne sont pas au courant de '<>'. – Orbling