2010-12-11 7 views
23

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?

+0

Dupliquer: http://stackoverflow.com/questions/239888/logical-negation-operator-in-f-equivalent – Orbling

+0

Désolé pour le doublon. Je n'ai pas vu ça quand je cherchais. –

+0

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

Répondre

19

OCaml, vous pouvez utiliser le mot-clé "non":

if not condition then ... 

fonctionne aussi avec un peu de chance F #.

+3

+1: oui, fonctionne en F #. Entourer les conditions avec des parens comme nécessaire. – Juliet

+0

C'est le cas. Soyez prudent avec la priorité de l'opérateur. –

+0

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! –

-14

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) { ... } 
+4

'!' Est l'opérateur pour obtenir la valeur d'une cellule de référence dans F #. vous avez besoin de la fonction "not". –

+1

@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

+1

Bon point, même si je pense que ça pourrait faire avec un montage pour le faire abondamment clair. – Orbling

23

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.

+0

Wow! Merci pour le conseil à ce sujet. Je n'avais aucune idée que tu pouvais utiliser la pipe pour faire ça. –

+0

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

Questions connexes