Ich möchte eine Variable zwischen 0 und 1 umschalten. Wenn es 0 ist, möchte ich sie auf 1 setzen, andernfalls möchte ich sie auf 0 setzen, wenn es 1 ist.
Dies ist eine so grundlegende Operation, dass ich so oft schreibe, dass ich den kürzesten und klarsten Weg untersuchen möchte. Hier ist mein bisher bestes:
v = (v == 0 ? 1 : 0);
Können Sie das verbessern?
Bearbeiten: Die Frage lautet, wie die obige Aussage in den wenigsten Zeichen geschrieben werden soll, während die Klarheit erhalten bleibt - wie ist dies "keine echte Frage"? Dies war nicht als Code-Golf-Übung gedacht, obwohl einige interessante Antworten von Leuten kamen, die es als Golf betrachteten - es ist schön zu sehen, wie Golf konstruktiv und zum Nachdenken anregend eingesetzt wird.
javascript
variables
coding-style
toggle
Ollie Glass
quelle
quelle
v = +!v;
Antworten:
Sie können einfach verwenden:
Dies setzt natürlich voraus, dass die Variable richtig initialisiert ist, dh dass sie nur den Wert 0 oder 1 hat.
Eine andere Methode, die kürzer ist, aber einen weniger gebräuchlichen Operator verwendet:
Bearbeiten:
Deutlich sein; Ich bin dieser Frage nie als Code-Golf begegnet, nur um einen kurzen Weg zu finden, die Aufgabe zu erledigen, ohne irgendwelche undurchsichtigen Tricks wie Nebenwirkungen von Bedienern anzuwenden.
quelle
v ^= 1
klar findet , sollte aufhören zu programmieren, ist ein wenig hart, denke ich. Wie bereits erwähnt, ist es nicht einer der gebräuchlichsten Operatoren und macht nicht das Gleiche wiev = v ^ 1
. Auch der Operator meint in verschiedenen Sprachen (VB) etwas völlig anderes. Ja, eine schnelle Suche zeigt Ihnen, dass es sich um einen XOR-Operator handelt, und Sie werden verstehen, was er tut, aber für viele ist dies auf den ersten Blick möglicherweise nicht offensichtlich. Ich glaube nicht, dass Sie Ihren Job kündigen müssen.Da
0
ist einfalse
Wert und1
ist eintrue
Wert.Wenn Sie gerne
true
undfalse
anstelle von Zahlen verwendenoder wenn es Zahlen sein müssen:
quelle
+
davor!
. Ohhh das sieht soooo dreckig aus! aber cool: pswitch(v){ case 0 ...
oder wenn (v == 0) oder wenn v === 0. Sie ändern sein Ergebnis zusätzlich zu seinem Ansatz ....({v :+! v}).v
.+
Zeichen! ¯ \ _ (ツ) _ / ¯v = (v ? 0 : 1)
so klar und idiomatisch JS.v = (v + 1) % 2
und wenn Sie mehr Werte durchlaufen müssen, ändern Sie einfach2
für(n + 1)
. Angenommen, Sie müssen nur 0,1,2 durchlaufenv = (v + 1) % 3
.quelle
const
Variable anstelle der magischen Zahlen 2, 3, ...++v % 3
Wenn Sie durch 0, 1, 2Sie können eine Funktion dafür schreiben und wie folgt verwenden:
v = inv(v)
quelle
inv
Funktion steht: P)inv
einen beschreibenden Namen?Wenn Sie sich für keine andere Möglichkeit als 1 interessieren:
Im obigen Fall wird v 1, wenn v 0, falsch, undefiniert oder null ist. Seien Sie vorsichtig mit diesem Ansatz - v ist 0, auch wenn v "Hallo Welt" ist.
quelle
v = v ? 0 : 1
.Linien mögen
v = 1 - v
oderv ^= 1
oderv= +!v
werden alle die Arbeit erledigen, aber sie bilden das, was ich als Hacks bezeichnen würde. Dies sind keine schönen Codezeilen, sondern billige Tricks, um den beabsichtigten Effekt zu erzielen.1 - v
kommuniziert nicht "den Wert zwischen 0 und 1 umschalten". Dies macht Ihren Code weniger ausdrucksstark und führt einen Ort ein (wenn auch einen kleinen), an dem ein anderer Entwickler Ihren Code analysieren muss.Eine Funktion wie zu haben,
v = toggle(v)
vermittelt die Absicht auf den schnellsten Blick.quelle
v=1-v
kommuniziert der Umschalter nicht?1-v
kann zwar umschalten kommunizieren, aber das ist das einzige, was es kommuniziert. Beispielsweise kann es auch eine Linie mit Null beiv=1
oder eine Spiegeltransformation zentriert bei zentrierenv=0.5
. In diesem Sinne ist es relativ vieldeutig. Es ist wahr, dass das Wissen, dassv
dies immer nur die beabsichtigte Bedeutung sein0
oder1
einschränken kann, aber andere Entwickler (oder Ihr zukünftiges Selbst) dazu zwingt, diesen Kontext zu verstehen, bevor sie diese einfache Linie verstehen können. Sie können nicht viel klarer sein alsv = toggle(v)
v ^= 1
Es ist jedoch völlig klar, wenn Sie logische Operationen verstehen, die Sie als Programmierer besser hätten. Ich denke, das ist der Unterschied zwischen dem undv=1-v
; Es ist eine logische Operation und eine arithmetische Operation, und wir versuchen, ein logisches Konzept darzustellen, kein mathematisches.v ^= 1
aber auch einige Unklarheiten, da es als bitweises xor interpretiert werden kann.( Ehrlichkeit und mathematische Integrität - angesichts der Anzahl der Stimmen zu dieser "Antwort" - haben mich veranlasst, diese Antwort zu bearbeiten. Ich habe mich so lange wie möglich zurückgehalten, weil sie als kurzer Witz gedacht war und nicht als etwas "Tiefes", das so hineingesteckt wurde Jede Erklärung schien dem Zweck zu widersprechen. Die Kommentare machen jedoch deutlich, dass ich klar sein sollte, um Missverständnisse zu vermeiden. )
Meine ursprüngliche Antwort:
Der Wortlaut dieses Teils der Spezifikation:
impliziert, dass die genaueste Lösung ist:
Erstens das Geständnis: Ich habe meine Delta-Funktionen verwirrt. Das Kronecker-Delta wäre etwas passender gewesen, aber nicht viel, da ich etwas wollte, das domänenunabhängig ist (das Kronecker-Delta wird hauptsächlich nur für ganze Zahlen verwendet). Aber ich hätte wirklich überhaupt keine Delta-Funktionen verwenden sollen, ich hätte sagen sollen:
Lassen Sie mich das klarstellen. Denken Sie daran, dass eine Funktion ein Tripel ist (X, Y, f) , wobei X und Y Mengen sind (als Domäne bzw. Codomäne bezeichnet) und f eine Regel ist, die jedem Element von X ein Element von Y zuweist . Wir schreiben oft die dreifache (X, Y, f) als f: X → Y . Bei einer Teilmenge von X , beispielsweise A , gibt es eine charakteristische Funktion, die eine Funktion χ A : X → {0,1} ist.(Es kann auch als Funktion einer größeren Codomäne wie ℕ oder ℝ angesehen werden.) Diese Funktion wird durch die Regel definiert:
χ A (x) = 1 wenn x ∈ A und χ A (x) = 0 wenn x ∉ A .
Wenn Sie Wahrheitstabellen mögen, ist dies die Wahrheitstabelle für die Frage "Ist das Element x von X ein Element der Teilmenge A ?".
Aus dieser Definition geht hervor, dass die charakteristische Funktion hier benötigt wird, wobei X eine große Menge enthält, die 0 und A = {0} enthält . Das hätte ich schreiben sollen.
Und so zu Delta-Funktionen. Dazu müssen wir uns mit Integration auskennen. Entweder du weißt es schon oder du weißt es nicht. Wenn Sie dies nicht tun, kann Ihnen nichts, was ich hier sagen kann, über die Feinheiten der Theorie erzählen, aber ich kann eine Zusammenfassung mit einem Satz geben. Ein Maß für eine Menge X ist im Wesentlichen "das, was benötigt wird, damit Durchschnittswerte funktionieren". Das heißt, wenn wir eine Menge X und ein Maß μ auf dieser Menge haben, dann gibt es eine Klasse von Funktionen X → ℝ , die messbare Funktionen genannt werden, für die der Ausdruck ∫ X f dμ Sinn macht und in einem vagen Sinn ist die „durchschnittliche“ von f über X .
Bei einer bestimmten Kennzahl für eine Menge kann eine "Kennzahl" für Teilmengen dieser Gruppe definiert werden. Dies erfolgt durch Zuweisen des Integrals seiner charakteristischen Funktion zu einer Teilmenge (vorausgesetzt, dies ist eine messbare Funktion). Dies kann unendlich oder undefiniert sein (die beiden unterscheiden sich geringfügig).
Es gibt viele Maßnahmen, aber es gibt zwei, die hier wichtig sind. Eines ist das Standardmaß auf der realen Linie, ℝ. Für diese Maßnahme ist ∫ ℝ f dμ so ziemlich das, was Sie in der Schule lernen (wird in Schulen noch Kalkül unterrichtet?): Fassen Sie kleine Rechtecke zusammen und nehmen Sie immer kleinere Breiten. In diesem Maß ist das Maß eines Intervalls seine Breite. Das Maß eines Punktes ist 0.
Ein weiteres wichtiges Maß, das für jede Menge funktioniert , wird als Punktmaß bezeichnet . Es ist so definiert, dass das Integral einer Funktion die Summe ihrer Werte ist:
∫ X f dμ = ∑ x ∈ X f (x)
Diese Kennzahl weist jeder Singleton-Menge die Kennzahl 1 zu. Dies bedeutet, dass eine Teilmenge genau dann eine endliche Kennzahl hat, wenn sie selbst endlich ist. Und nur sehr wenige Funktionen haben ein endliches Integral. Wenn eine Funktion ein endliches Integral hat, darf sie nur bei einer zählbaren Anzahl von Punkten ungleich Null sein . Die überwiegende Mehrheit der Funktionen, die Sie wahrscheinlich kennen, hat unter dieser Maßnahme kein endliches Integral.
Und nun zu Delta-Funktionen. Nehmen wir eine sehr breite Definition. Wir haben einen Meßraum (X, μ) (so dass ein Satz mit einem Maße darauf) und ein Element a ∈ X . Wir "definieren" die Delta-Funktion (abhängig von a ) als die "Funktion" δ a : X → ℝ mit der Eigenschaft, dass δ a (x) = 0 ist, wenn x ≠ a und ∫ X δ a dμ = 1 sind .
Die wichtigste Tatsache, um dies zu erreichen, ist folgende: Die Delta-Funktion muss keine Funktion sein . Es ist nicht richtig definiert: Ich habe nicht gesagt, was δ a (a) ist.
Was Sie an diesem Punkt tun, hängt davon ab, wer Sie sind. Die Welt teilt sich hier in zwei Kategorien. Wenn Sie Mathematiker sind, sagen Sie Folgendes:
Wenn Sie kein Mathematiker sind, sagen Sie Folgendes:
Nachdem ich jetzt mein Publikum beleidigt habe, werde ich weitermachen.
Das Dirac-Delta wird normalerweise als Delta-Funktion eines Punktes (oft 0) in der realen Linie mit seinem Standardmaß angenommen. Diejenigen, die sich in den Kommentaren darüber beschweren, dass ich meine Deltas nicht kenne, tun dies, weil sie diese Definition verwenden. Ich entschuldige mich bei ihnen: Obwohl ich mich mit der Verteidigung des Mathematikers (wie von Humpty Dumpty populär gemacht : einfach alles neu definieren, damit es richtig ist) daraus herauswinden kann, ist es eine schlechte Form, einen Standardbegriff zu verwenden, um etwas anderes zu bedeuten.
Aber es gibt eine Delta-Funktion, die macht, was ich will, und es ist das, was ich hier brauche. Wenn ich einen nehmen Punktmaß auf einem Satz X dann gibt ist eine echte Funktion δ ein : X → ℝ welche Folgendes erfüllt die Kriterien für eine Delta - Funktion. Dies liegt daran, dass wir nach einer Funktion X → ℝ suchen, die außer bei a Null ist und bei der die Summe aller ihrer Werte 1 ist. Eine solche Funktion ist einfach: Die einzige fehlende Information ist ihr Wert bei a und Um die Summe auf 1 zu bringen, weisen wir ihr einfach den Wert 1 zu. Dies ist nichts anderes als die charakteristische Funktion auf {a} . Dann:
∫ X δ a dμ = ∑ x ∈ X δ a (x) = δ a (a) = 1.
In diesem Fall stimmen für eine Singleton-Menge die charakteristische Funktion und die Delta-Funktion überein.
Zusammenfassend gibt es hier drei Familien von "Funktionen":
Die zweite davon ist die allgemeinste, da jede der anderen ein Beispiel dafür ist, wenn das Punktmaß verwendet wird. Aber der erste und dritte haben den Vorteil, dass sie immer echte Funktionen sind. Der dritte ist eigentlich ein Sonderfall des ersten für eine bestimmte Familie von Domänen (Ganzzahlen oder eine Teilmenge davon).
Als ich die Antwort ursprünglich schrieb, dachte ich schließlich nicht richtig (ich würde nicht so weit gehen zu sagen, dass ich verwirrt war , da ich hoffe, ich habe gerade gezeigt, dass ich weiß , wovon ich spreche, wenn Ich denke eigentlich zuerst, ich habe nur nicht viel nachgedacht). Die übliche Bedeutung des Dirac-Deltas ist hier nicht erwünscht, aber einer der Punkte meiner Antwort war, dass die Eingabedomäne nicht definiert wurde, so dass das Kronecker-Delta auch nicht richtig gewesen wäre. Die beste mathematische Antwort (die ich anstrebte) wäre also die charakteristische Funktion gewesen.
Ich hoffe, dass das alles klar ist; und ich hoffe auch, dass ich nie wieder ein mathematisches Stück mit HTML-Entitäten anstelle von TeX-Makros schreiben muss!
quelle
Du könntest es tun
Das Dekrement setzt den Wert auf 0 oder -1 und
Math.abs
konvertiert dann -1 in +1.quelle
v = Math.round(Math.sin(Math.PI/(v+3)));
v = Math.round(Math.cos(Math.PI/((v*2+1)+2)-2*v));
: Dv = 1
dannv = Math.Abs(-1)
was ist +1. Wennv = 0
dannv = Math.Abs(-0)
was ist 0.Im Allgemeinen können Sie den aktuellen Wert immer dann von der Summe der beiden Umschaltwerte abziehen, wenn Sie zwischen zwei Werten wechseln müssen:
quelle
v
beschädigt wird, wechselt es plötzlich zwischen zwei verschiedenen Werten. (Nur etwas zu beachten ...)v
normalerweise zwei Zustände aus einer Liste von drei oder mehr Zuständen abwechselnd ausgeführt werden, kann eine Beschädigung vonv
dazu führen, dass das Programm abwechselnd zwei völlig unterschiedliche Zustände ausführt - dies kann zu unerwarteten und unerwünschten Ergebnissen führen. Die Lektion, die Sie daraus ziehen sollten, lautet: Führen Sie immer Plausibilitätsprüfungen für Ihre Daten durch.Wenn es die Ganzzahl 1 oder 0 sein muss, ist die Art und Weise, wie Sie es tun, in Ordnung, obwohl Klammern nicht benötigt werden. Wenn diese a als Boolesche Werte verwendet werden sollen, können Sie einfach Folgendes tun:
quelle
Reicht !
quelle
v = (v==0 ? 1 : 0);
" . Alle anderen finden unterschiedliche Möglichkeiten, Golf zu spielen. und die Frage nicht wirklich beantworten. Deshalb habe ich diese Antwort positiv bewertet.Liste der Lösungen
Es gibt drei Lösungen, die ich vorschlagen möchte. Alle von ihnen wandeln jeden Wert
0
(wenn1
,true
etc.) oder1
(wenn0
,false
,null
etc.):v = 1*!v
v = +!v
v = ~~!v
und eine weitere, bereits erwähnte, aber clevere und schnelle (obwohl nur für
0
s und1
s funktioniert ):v = 1-v
Lösung 1
Sie können die folgende Lösung verwenden:
Dadurch wird zuerst die Ganzzahl in den entgegengesetzten Booleschen Wert (
0
toTrue
und einen anderen Wert toFalse
) konvertiert und dann beim Multiplizieren mit als Ganzzahl behandelt1
. Infolgedessen0
wird in1
und jeder andere Wert in konvertiert0
.Sehen Sie sich als Beweis diese jsfiddle an und geben Sie alle Werte an, die Sie testen möchten: jsfiddle.net/rH3g5/
Die Ergebnisse sind wie folgt:
-123
wird in eine Ganzzahl konvertieren0
,-10
wird in eine Ganzzahl konvertieren0
,-1
wird in eine Ganzzahl konvertieren0
,0
wird in eine Ganzzahl konvertieren1
,1
wird in eine Ganzzahl konvertieren0
,2
wird in eine Ganzzahl konvertieren0
,60
wird in eine Ganzzahl konvertieren0
,Lösung 2
Wie mblase75 feststellte, hatte jAndy eine andere Lösung, die wie meine funktioniert:
Es macht auch zuerst einen Booleschen Wert aus dem ursprünglichen Wert, verwendet ihn jedoch,
+
anstatt1*
ihn in eine Ganzzahl umzuwandeln. Das Ergebnis ist genau das gleiche, aber die Notation ist kürzer.Lösung 3
Der andere Ansatz besteht darin, den
~~
Operator zu verwenden :Es ist ziemlich ungewöhnlich und wird immer von boolean in eine Ganzzahl konvertiert.
quelle
+
, um sie in eine Zahl umzuwandeln.+!v
Dies entspricht Ihrer Lösung (jAndys Lösung in den Kommentaren des OP).1*
das ersetzt werden kann,+
wenn Sie versuchen, Boolesche Werte in Ganzzahlen umzuwandeln. Alles andere in meiner Antwort bleibt gleich. jAndys Antwort ist richtig, aber meine ist detaillierter. Ich werde seine / ihre Lösung zu meiner Antwort hinzufügen.Um eine andere Antwort, einen Kommentar und meine eigene Meinung zusammenzufassen, schlage ich vor, zwei Dinge zu kombinieren:
Hier ist die Funktion, die Sie in eine Bibliothek einfügen oder in ein Plugin für ein anderes Javascript Framework einbinden können.
Und die Verwendung ist einfach:
Die Vorteile sind:
quelle
function toggle(i){ return i == 0 ? 1 : 0 }
?Ich weiß nicht, warum du deine eigenen Booleschen Werte bauen willst? Ich mag die funky Syntax, aber warum nicht verständlichen Code schreiben?
Dies ist nicht der kürzeste / schnellste, aber der klarste (und für alle lesbare) ist die Verwendung des bekannten if / else-Status:
Wenn Sie wirklich klar sein möchten, sollten Sie dafür Boolesche Werte anstelle von Zahlen verwenden. Sie sind für die meisten Fälle schnell genug. Mit Booleschen Werten können Sie einfach diese Syntax verwenden, die in Kürze gewinnt:
quelle
=== 0
. Bei Sample-Eingabe von7
ist die richtige Ausgabe0
, dies wird jedoch ausgegeben1
.Eine andere Form Ihrer ursprünglichen Lösung:
EDIT: Danke an TehShrike und Guffa, dass sie auf den Fehler in meiner ursprünglichen Lösung hingewiesen haben.
quelle
'opacity:'+true
und Sie landen mitopacity:true
stattopacity:1
.Ich würde es expliziter machen.
Was heißt
v
dasZum Beispiel, wenn v ein Zustand ist. Erstellen Sie einen Objektstatus. In DDD ein Wertobjekt.
Implementieren Sie die Logik in diesem Wertobjekt. Dann können Sie Ihren Code auf eine funktionalere und besser lesbare Weise schreiben. Der Statuswechsel kann durch Erstellen eines neuen Status basierend auf dem aktuellen Status erfolgen. Ihre if-Anweisung / Logik wird dann in Ihr Objekt eingekapselt, was Sie unittest können. Ein valueObject ist immer unveränderlich, hat also keine Identität. Um den Wert zu ändern, müssen Sie einen neuen erstellen.
Beispiel:
quelle
Ein anderer Weg, es zu tun:
quelle
Dies fehlt:
Es funktioniert auch als Round Robin:
Oder
Das Charme der letzten Lösung ist, dass es auch mit allen anderen Werten funktioniert.
Für einen ganz besonderen Fall, wenn Sie einen (sich ändernden) Wert erhalten
undefined
möchten, kann dieses Muster hilfreich sein:quelle
Da dies JavaScript ist, können wir das Unäre verwenden
+
, um in int zu konvertieren:Dies wird
NOT
den Wert vonv
(Geben vontrue
ifv == 0
oderfalse
ifv == 1
) logisch . Dann konvertieren wir den zurückgegebenen booleschen Wert in die entsprechende Ganzzahldarstellung.quelle
Nur zum Spaß:
v = Math.pow(v-1,v)
Schaltet auch zwischen 1 und 0 um.quelle
Einer noch:
v=++v%2
(in C wäre es einfach
++v%=2
)ps. Ja, ich weiß, dass es sich um eine doppelte Zuweisung handelt, aber dies ist nur eine rohe Umschreibung der C-Methode (die nicht so funktioniert, wie sie ist, da der JS-Vorinkrementierungsoperator keinen Wert zurückgibt.
quelle
++
Operators nicht ändern (es ist kein l-Wert). Wasv=++v%2
, Sie modifizierenv
zweimal. Ich weiß nicht, ob das in JavaScript gut definiert ist, aber es ist nicht notwendig.v = (v+1) % 2
.c++
darin - weil der Vorinkrementierungsoperator eine höhere Priorität hat und die Variable 'an Ort und Stelle' ändert, kann sie als l-Wert verwendet werden. Ich denke, dass die JS-Implementierung von so++
ist, dass sie nicht als Wert behandelt werden kann: / Und ja, das ist überflüssig, aber ich habe versucht, nur eine andere Methode zu zeigen - es gibt bereits bessere Lösungen :)Wenn Sie sicher sind, dass Ihre Eingabe entweder eine 1 oder eine 0 ist, können Sie Folgendes verwenden:
quelle
Definieren Sie ein Array {1,0}, setzen Sie v auf v [v], daher wird v mit einem Wert von 0 zu 1 und umgekehrt.
quelle
Eine andere kreative Art, dies zu tun, bei
v
der jeder Wert gleich ist, wird immer zurückkehren0
oder1
quelle
!!
führen zu nichts in der logischen Mathematik, Sie können!!!!
dort eingeben und werden gleich sein, aber resultieren 4 nicht benötigte Operationen!!
wird in einen Bool umgewandelt.!!(1) === true
und!!(0) === false
v = Boolean(v^1)
wäre informativer, danke für die Erklärung - dachte nicht über Casting nach!
in Boolesche Werte umgewandelt wird. Durch Hinzufügen eines weiteren!
wird dieser Boolesche Wert negiert. Das Casting ist hier implizit und das Endergebnis funktioniert. Das -1 ist nicht erforderlich.Wenn mögliche Werte für v nur 0 und 1 sind, dann für jede ganze Zahl x der Ausdruck: v = Math.pow ((Math.pow (x, v) - x), v); schaltet den Wert um.
Ich weiß, dass dies eine hässliche Lösung ist und das OP nicht danach gesucht hat ... aber ich habe nur über eine andere Lösung nachgedacht, als ich auf dem Klo war: P.
quelle
Ungetestet, aber wenn Sie nach einem Booleschen Wert suchen, wird das meiner Meinung
var v = !v
nach funktionieren.Referenz: http://www.jackfranklin.co.uk/blog/2011/05/a-better-way-to-reverse-variables
quelle
funktioniert für v = 0 und v = 1; und den Staat umschalten;
quelle
Wenn es nur zwei Werte gibt, wie in diesem Fall (0, 1), halte ich es für verschwenderisch, int zu verwenden. Entscheide dich lieber für Boolesche Werte und arbeite in Bits. Ich weiß, ich gehe davon aus, aber im Falle eines Wechsels zwischen zwei Zuständen scheint Boolescher Wert die ideale Wahl zu sein.
quelle
Nun, wie wir wissen, liefert nur dieser boolesche Vergleich in Javascript auch das erwartete Ergebnis.
dh
v = v == 0
reicht dafür.Unten ist der Code dafür:
JSFiddle: https://jsfiddle.net/vikash2402/83zf2zz0/
Ich hoffe das hilft dir :)
quelle
true
undfalse
. Sie können verwendenv == 0
, um den Wert der Variablen in einer Bedingung zu bestimmen, aber wenn Sie den Wert 0 oder 1 verwenden möchten, müssen Sie etwas wiev == 0 ? 0 : 1
oder verwendenNumber(v)
, um dies zu erhalten. (Sie können auch verwenden,v = !v;
um zwischentrue
undfalse
Der invertierte boolesche Wert wird in Number umgewandelt, was die gewünschte Ausgabe ist.
quelle