JSL: if - else -> die Kommas finden?Hallo,
Ich stehe oft vor dem Problem, dass ein Code nicht funktioniert, weil 1 von 10 Semikolons ein Komma ist oder ein Komma, das zum if-Block gehört, tatsächlich fehlt.
Gibt es einen einfachen Trick, um die Blöcke in einer if-else-Klausel besser sichtbar zu machen?
Erweiterte statistische ModellierungVerbraucher- und MarktforschungVersuchsplanungZuverlässigkeitsanalyseBetreff: JSL: if - else -> die Kommas finden?cool, sehr praktisch 
Betreff: JSL: if - else -> die Kommas finden?Wenn Sie die If()-Anweisung in den Formeleditor einfügen, können Sie sie schnell erkennen.

Betreff: JSL: if - else -> die Kommas finden?Oh nein – wieder einmal verhält es sich nach einigem Kopieren und Einfügen und Neuanordnen meines Codes so, als ob irgendwo in einer if-Anweisung ein falsches Komma wäre
- und ich wünschte, es gäbe eine Highlight-Funktion bereits in Jmp17 implementiert 
Hm, noch nicht ...
Also ging ich auf die Vorschläge in den Beiträgen zurück und suchte nach Hilfe.
Beim Lesen der Vorschläge das erste Mal Ich dachte: Hört sich gut an, viele davon werden mir helfen, wenn ich das nächste Problem habe.
Als ich nun nach dem falsch gesetzten Komma suchte, war es tatsächlich so @txnelson 'S Anregung was mir bei der Suche geholfen hat:
Klicke auf Skript neu formatieren und prüfen Sie, wo die Einrückung nicht mit der erwarteten übereinstimmt.
Ganz einfach – und wie erwartet.
Andererseits lesen sich die anderen Vorschläge bei der Suche nach dem falschen Komma immer wieder ein wenig wie
" Gibt es ein Komma, wo es nicht sein sollte? Sie müssen es finden und korrigieren ".
Um beide Ansätze zu kombinieren, um Ihren Code zu schreiben
1) auf lesbare Weise
2) so dass Skript neu formatieren ändert die Formatierung nicht.
Man könnte ein leere Zeile vor den Kommas in der Wenn Aussagen. Dies wird verhindert Skript neu formatieren vom Verschieben der Kommas bis zum Ende der vorherigen Zeile.Leider verschiebt es auch den Code nach den Kommas in die nächste Zeile und belässt die Kommas einfach dort – was den Code etwas „weitmaschig“ und schwer lesbar macht. Hm.
Names Default To Here( 1 );
dt = Current Data Table();
If(
Is Empty( dt ),
Print( "no table found" );
,
N Rows( dt ) == 0,
Print( "table has no data" );
, // else
Print( "ok" )
);
Versuchen Sie es selbst: Wo ist das falsch gesetzte Komma?
Code, wie er von bereitgestellt wurde ErraticAttack , aber mit einem Komma anstelle eines Semikolons:
Names Default to Here( 1 );
dt = Current Data Table();
Try(
If( Contains( dt << Get Column Names, As Name( "height" ) ),
mean = Col Mean( dt:height );
max = Col Max( dt:height );
min = Col Min( dt:height );
std dev = Col Std Dev( dt:height ),
Write( "\!NSome stats on :HEIGHT:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Contains( dt << Get Column Names, As Name( "weight" ) ),
mean = Col Mean( dt:weight );
max = Col Max( dt:weight );
min = Col Min( dt:weight );
std dev = Col Std Dev( dt:weight );
Write( "\!NSome stats on :WEIGHT:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Contains( dt << Get Column Names, As Name( "age" ) ),
mean = Col Mean( dt:age );
max = Col Max( dt:age );
min = Col Min( dt:age );
std dev = Col Std Dev( dt:age );
Write( "\!NSome stats on :AGE:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Print( "Cannot find columns 'height', 'weight', or 'age'" )
)
,
Print( "mistakes were made" )
)
Mehr sehen... Betreff: JSL: if - else -> die Kommas finden?Hallo @hogi ,
Dies ist keine genaue Antwort auf Ihre spezifische Frage. Ich denke jedoch, dass diese JSL-Erweiterung für Visual Studio im Allgemeinen ein besseres Skripterlebnis bietet.
https://marketplace.visualstudio.com/items?itemName=VinceFaller.jmp-scripting
Betreff: JSL: if - else -> die Kommas finden?Ich bin einverstanden mit @jthi Ich vermeide die Neuformatierung.Als Programmierer ist es meine Aufgabe, einen klaren Styleguide zu haben und ihn beim Schreiben des Codes durchzusetzen.
Anmerkungen wie z
, // else
kann dabei helfen, einen visuellen Leitfaden zu geben, wenn eine große Anzahl von Codezeilen vorhanden ist.
Ich denke auch, dass es der bevorzugte Stil ist, das Komma mit der Haupt-IF-Anweisung auszurichten.
Betreff: JSL: if - else -> die Kommas finden?Meines Wissens nach nicht. Derzeit sind die wenigen Änderungen, die Sie vornehmen können, auf der Seite „Skripteditor“ der Einstellungen zu finden.
Auch das Schreiben eines anpassbaren automatischen Formatierers ist nicht die einfachste Aufgabe (zumindest glaube ich das) und ich bin mir nicht einmal sicher, ob es eine gute Idee ist. Ich denke, eigensinnige automatische Formatierer sind weiter verbreitet und höchstwahrscheinlich besser als vollständig anpassbare. Aber JSL hat keine Styleguides, denen man folgen kann, also gibt es auch keine gemeinsam Meinung, auf der der automatische Formatierer basieren soll (JSL ist eine sehr kleine Sprache).
Hier ist ein Video zum schwarzen Autoformatierer für Python Łukasz Langa – Life Is Better Painted Black, oder: Wie man sich keine Sorgen mehr macht und die automatische Formatierung akzeptiert (youtube.com)
Betreff: JSL: if - else -> die Kommas finden?
@jthi schrieb:
[Neuformatierung] richtig konfigurieren ...
Gibt es eine Möglichkeit, die Neuformatierung zu konfigurieren?
Betreff: JSL: if - else -> die Kommas finden?Ich verwende einen etwas ähnlichen Stil wie @ErraticAttack aber ich trenne Bedingungen in derselben Zeile wie auf und kann sogar andere kommentieren und abfangen, wenn die Blöcke lang sind
Names Default To Here(1);
dt = Current Data Table();
Try(
If(Is Empty(dt),
print("no table found");
, N Rows(dt) == 0,
print("table has no data");
, N Rows(dt) <= 10,
print("not enough data");
, // else
print("ok")
);
, // catch
show(exception_msg);
);
ICH versuchen um zu vermeiden, dass ich eine JSL-Neuformatierung verwende, nachdem meine Skripte lang/kompliziert genug werden, da ich sie normalerweise nach der Verwendung bereinigen muss. Selbst wenn die Neuformatierung so flexibel wäre, wie ich es bräuchte, würde ich mir wohl nicht die Mühe machen, sie richtig zu konfigurieren ...
Betreff: JSL: if - else -> die Kommas finden?Meine Lösung hierfür besteht darin, wichtige Kommas auf der Ebene des umschließenden Zauns zu setzen.Hier ist ein Beispiel: Beachten Sie, dass sich die Kommas, die die IF-Blöcke trennen, auf der Ebene der IF-Anweisung befinden und für TRY dasselbe sind
Names Default to Here( 1 );
dt = Current Data Table();
Try(
If( Contains( dt << Get Column Names, As Name( "height" ) ),
mean = Col Mean( dt:height );
max = Col Max( dt:height );
min = Col Min( dt:height );
std dev = Col Std Dev( dt:height );
Write( "\!NSome stats on :HEIGHT:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Contains( dt << Get Column Names, As Name( "weight" ) ),
mean = Col Mean( dt:weight );
max = Col Max( dt:weight );
min = Col Min( dt:weight );
std dev = Col Std Dev( dt:weight );
Write( "\!NSome stats on :WEIGHT:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Contains( dt << Get Column Names, As Name( "age" ) ),
mean = Col Mean( dt:age );
max = Col Max( dt:age );
min = Col Min( dt:age );
std dev = Col Std Dev( dt:age );
Write( "\!NSome stats on :AGE:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Print( "Cannot find columns 'height', 'weight', or 'age'" )
)
,
Print( "mistakes were made" )
)
Betreff: JSL: if - else -> die Kommas finden?JMP sollte Sie für eine Stelle im Bereich Produktqualität einstellen! Liebe es!
Betreff: JSL: if - else -> die Kommas finden?Danke für Ihre Unterstützung 
hier ist der Wunsch:
optimierte Syntaxhervorhebung im JSL-Editor
Betreff: JSL: if - else -> die Kommas finden?Ich mag Ihre Meinung dazu und andere Gedanken, die Sie zu Verbesserungen an JMP und JSL haben. Ich schlage vor, dass Sie diese zur JMP-Wunschliste hinzufügen.Dadurch gelangen Ihre Beiträge zu den Personen, die die Änderungen tatsächlich vornehmen können.
Betreff: JSL: if - else -> die Kommas finden?Hm, ich dachte nur:
Wenn es diesen wunderbaren GraphBuilder in Jmp gibt, der Ihnen hilft, jede Art von Diagramm innerhalb von 5 Sekunden zu erstellen,
Es sollte auch möglich sein, komplizierte If & Match-Strukturen in < 5 Sekunden zu analysieren, um etwaige Fehler in der Struktur zu finden.
Die automatische Einrückung per „Reformat-Skript“ ist großartig – sie zeigt die komplette Hierarchie der Codestruktur – auf einen Blick.
Aber das ist auch der Nachteil: Die vollständig Hierarchie
Aus diesem Grund benötigt das menschliche Auge einige Zeit, um die Informationen zu analysieren – und benötigt dabei sogar die Unterstützung des Gehirns.
Es gibt Möglichkeiten, Informationen in einem Format zu kodieren, bei dem das „Auge“ weniger Unterstützung vom Gehirn benötigt – wie man daraus lernen kann @XanGregg :
Plenum: Alle Grafiken sind falsch, aber einige sind nützlich – Xan Gregg
In diese Richtung denken ...
A Klicken Sie auf eine Klammer, um die If-Anweisung hervorzuheben ist sehr nützlich
- aber es wäre toll, wenn die Schattierung des eingefügten Textes nicht einheitlich wäre (wie im Bild links) - aber auf sinnvolle Weise (wie im Bild rechts).
Jmp verfügt über alle benötigten Informationen (es verwendet sie zum Anpassen der Einrückung) – warum nicht auch für die Schattierung verwenden?
Es ist klar, dass es im Bild rechts KEINE zusätzlichen Informationen gibt, die nicht aus der Einrückung links abgeleitet werden können.
Und die Einrückung kann noch mehr zeigen: die komplette Hierarchie der komplexen Codestruktur auf einen Blick. Ja.
Aber das richtige Bild sieht ziemlich überzeugend aus, oder?
bearbeiten: Link zum Wunsch

Betreff: JSL: if - else -> die Kommas finden?ich mochte was dieser Mann hier zu sagen hatte .
JMP kümmert sich nicht um diese Formatierung, aber Sie geraten schnell ins Chaos, wenn Sie nicht die Disziplin haben, den Code so zu schreiben, dass er die Hierarchie der Anzeigefelder widerspiegelt.
Diese Aussage gilt nicht ausschließlich für Displayboxen, sondern für JSL im Allgemeinen. Ich selbst lerne immer noch, aber es ist eine gute Zeitinvestition, Code visuell in logische Teile zu strukturieren, auch wenn es manchmal zu einer forensischen Übung wird (wobei zufälligerweise das meiste Lernen stattfindet).
Betreff: JSL: if - else -> die Kommas finden?Klicken Sie mit der rechten Maustaste auf das JSL-Fenster und wählen Sie „Skript neu formatieren“.
Dadurch werden die Blöcke an Standardeinzügen ausgerichtet.
Sie können auch auf eine beliebige Funktions- oder Matrix-Grenzklammer {} [] klicken und die entsprechende Klammer wird ausgewählt
Betreff: JSL: if - else -> Kommas finden?ein schönes Beispiel was schief gehen kann:
x= if(<BR />// 1st test<BR /><BR /> 1==3,
1
, // 2nd test
1==5,
2,
, // others
3
)
nach der Ausführung des Codes, x= ...
Mehr anzeigen...(Zum Lesen markieren)
Hinweis:

... keine Fehlermeldung?
Hinweis: ...keine Fehlermeldung?
Betreff: JSL: if - else -> Kommas finden?Leute, das ist fast perfekt:

https://community.jmp.com/t5/Discussions/If-statement-comma/mp/824212/highlight/true#M100363
nette Problemumgehung
... bis :folded_hands: eine optimierte Syntaxhervorhebung im JSL-Editor verfügbar wird.