Was ist der beste Weg in F # zu schreiben, wenn nicht Bedingung?F # wenn nicht Bedingung
Im Moment ist ich es so schreiben:
if condition <> true then do
Gibt es einen anderen kürzeren Weg, es zu schreiben? Wie mit dem! Operator?
Was ist der beste Weg in F # zu schreiben, wenn nicht Bedingung?F # wenn nicht Bedingung
Im Moment ist ich es so schreiben:
if condition <> true then do
Gibt es einen anderen kürzeren Weg, es zu schreiben? Wie mit dem! Operator?
In Ocaml, können Sie das "nicht" Schlüsselwort:
if not condition then ...
Hoffentlich auch mit F # funktioniert.
+1: yep, funktioniert in F #. Surround-Bedingungen mit Parens nach Bedarf. – Juliet
Es tut. Seien Sie vorsichtig mit der Priorität des Operators. –
AH! Ich habe das früher versucht, aber ich konnte den Fehler, den es mir erzählte, nicht verstehen. Jetzt funktioniert es gut mit dem Schlüsselwort nicht. Vielen Dank! –
Ich weiß nicht F #, aber in C, mit der! Betreiber würde ich schreiben:
if(!condition) { ... }
, die gleich ist wie
if(condition == false) { ... }
'!' Ist Operator, um den Wert einer Referenzzelle in F # zu erhalten. Sie brauchen die 'Nicht'-Funktion. –
@Tomas Petricek, begann ich mit "Ich weiß nicht F #". Ich sah, dass er tat, wenn Bedingung <> dann wahr ... so vermutete er "vielleicht weiß er nicht, dass er Bedingung negieren kann und dasselbe Ergebnis erhält" – BlackBear
Guter Punkt, obwohl ich denke, dass es mit einer Änderung tun könnte, um es reichlich zu machen klar. – Orbling
Es ist die not function, aber es funktioniert nur mit Booleschen Variablen.
So kann man sagen:
if (not condition) then do
Aber das würde mit anderen Arten als in C-Stil Sprachen nicht funktionieren.
Verwenden Sie nicht versehentlich !
, da es immer noch ein Operator in F # ist, ist es ein dereference on a mutable reference cell.
Siehe full operator documentation.
wenn man bedenkt, dass nicht auch eine Funktion, dann Rohr Sie können Ihren Zustand hinein Klammer zu vermeiden, wie so:
if not <| condition param1 param2 then ...
Grund dafür ist, wenn Ihr Zustand Funktion Argumente übernimmt, die Sie nicht brauchen
not (condition param1 param2)
zu tun, es ist wahrscheinlich ein wenig sauberer ihm die erste Art und Weise zu tun, da es f # scheint zugunsten von Rohren anstelle von Klammern für Operator Vorrang.
Wow! Danke für den Tipp dazu. Ich hatte keine Ahnung, dass du das Rohr dazu benutzen könntest. –
Ich liebe das, 'wenn nicht <| condition param1 param2 then ... 'passt gut in F # 's Kürze, da beide einfach getippt, gelesen und modifiziert werden können. Klammern sind so OO ;-) – TaterJuice
Duplizieren: http://stackoverflow.com/questions/239888/logical-negation-operator-in-f-äquivalent – Orbling
Entschuldigung für das Duplikat. Ich habe das nicht gesehen, als ich gesucht habe. –
Das ist in Ordnung, es ist eine wichtige Frage, wegen des Vorbehaltes in meiner Antwort, ein bisschen eine Falle für diejenigen, die sich ''' '' nicht bewusst sind. – Orbling