| Lautsprecher |
Transkript |
| wendymurphrey |
Hallo und vielen Dank für Ihre Teilnahme an unserer heutigen Präsentation. Wir freuen uns darauf, mit Ihnen über typische Szenarien zu sprechen, mit denen Drehbuchautoren unterschiedlicher Erfahrung konfrontiert werden. |
| |
Wir möchten Ihnen erklären, was passiert, damit Sie die Werkzeuge und das Wissen haben, um diese Fehler zu vermeiden. Also los geht’s. |
| |
Vielleicht weil es standardmäßig nicht geöffnet ist, vergisst man leicht, das Protokoll auf Meldungen zu überprüfen. Das Protokoll enthält jedoch nützliche Informationen zu kürzlich ausgeführten Skripten. Schauen wir uns dieses Beispiel in JMP genauer an. |
| |
Hier sehen wir, dass das Skript einfach eine Datentabelle öffnet und versucht, eine Zeilenauswahl zu treffen. Wenn wir dieses Skript ausführen, |
| |
Bei schwerwiegenden Fehlern, also in Situationen, in denen Ihr Skript aufgrund des Fehlers abgebrochen wird, erhalten wir eine interaktive Fehlermeldung. Das Popup-Fenster ist eine neue Funktion in JMP 15 und kann in den Einstellungen deaktiviert werden. |
| |
Wenn wir diese Meldung schließen, können wir das Protokoll überprüfen und sehen die gleiche Meldung aus dem Fenster, aber wir sehen auch die Zeilennummer |
| |
Der Name der Skriptdatei hilft uns, den Fehlerbereich zu finden. Verlassen Sie sich nicht ausschließlich auf diese Popup-Fenster, da im Protokoll auch andere wichtige Meldungen erscheinen. |
| |
und sie verursachen nicht unbedingt ein Popup-Fenster. Schauen wir uns also ein weiteres Beispiel an. |
| |
In diesem Skript versucht der Autor, eine Tabelle zu öffnen, eine Analyse zu erstellen und eine Nachricht in das Protokoll zu drucken. |
| |
Und wenn wir dieses Skript ausführen, bemerken wir sofort, dass unsere Analyse nicht generiert wurde. |
| |
Also überprüfen wir noch einmal das Protokoll |
| |
und wir sehen, dass es eine Spalte gab, die in der Datentabelle nicht gefunden wurde, aber das Skript wurde fortgesetzt und hat unsere Nachricht in das Protokoll gedruckt. |
| |
Wichtig ist daher, immer das Protokoll zu überprüfen, insbesondere wenn das Ergebnis nicht Ihren Erwartungen entspricht. Es kann sich einfach nur um einen falsch geschriebenen Spaltennamen handeln. |
| |
Das Konzept der aktuellen Datentabelle wird oft als aktive Tabelle bezeichnet. Aber was macht die Tabelle zur aktiven oder aktuellen Datentabelle und warum ist das für Ihr Skript wichtig? |
| |
Wenn eine Tabelle geöffnet, erstellt oder anderweitig bearbeitet wird, wird sie zur aktuellen Datentabelle. Es gibt jedoch auch andere Möglichkeiten, wie eine Tabelle zur Laufzeit aktuell werden kann, die Sie als Skriptautor möglicherweise nicht vorhergesehen haben. |
| |
Ihre Aufgaben werden von JMP im Hintergrund verarbeitet. Beispielsweise muss JMP möglicherweise eine Formel auswerten oder ein Fenster aktualisieren. |
| |
Diese Hintergrundprozesse können dazu führen, dass zur Laufzeit eine andere Tabelle als die von Ihnen beabsichtigte aktiv wird. Dies kann dazu führen, dass Ihr Skript fehlschlägt oder, schlimmer noch, Sie nicht einmal bemerken, dass JMP die falsche Tabelle verwendet hat. |
| |
Hier haben wir einige |
| |
Best Practices zum Erstellen Ihrer Skripte mit datentabellenspezifischen Referenzen. So stellen Sie sicher, dass die richtige Tabelle verwendet wird, unabhängig davon, welche Tabelle zur Laufzeit aktiv ist. |
| |
In diesem Beispiel zeigen wir, wie Sie einen bivariaten Aufruf an eine bestimmte Datentabelle senden können, um sicherzustellen, dass die Daten in dieser Tabelle für Ihre Analyse verwendet werden. |
| |
Sie können die neue Spalte auch als Nachricht an eine bestimmte Datentabelle verwenden. Dadurch wird sichergestellt, dass Ihre neue Spalte in der gewünschten Tabelle erstellt wird und nicht in die aktuelle Tabelle verschoben wird. |
| |
Sie können auch optionale Datentabellenreferenzen verwenden. Hier zeigen wir Ihnen, wie Sie diese zum Referenzieren von Spalten verwenden können. Wir werden später ausführlicher auf das Referenzieren von Spalten eingehen. |
| |
Sie können in Funktionen auch optionale Datentabellenverweise verwenden; für jede Zeile und Zusammenfassung gibt es zwei, bei denen dies verfügbar ist. |
| |
Wir empfehlen Ihnen außerdem, die Verwendung einer Datentabelle zu vermeiden und in Ihren Produktionsskripten keine Datentabellenreferenzen mit der aktuellen Datentabellenfunktion zuzuweisen. In diesem Beispiel verknüpfen wir zwei Datentabellen und möchten dieser Tabelle eine Referenz zuweisen. |
| |
die aus dem Join erstellt wird. Der Join gibt nun eine Referenz auf die neu erstellte Tabelle zurück. Anstatt also der aktuellen Datentabelle zuzuweisen, möchten wir die Referenz beim Erstellen des Joins zuweisen. |
| |
Hier machen wir also einfach unsere Zuweisung, wenn wir den Join aufrufen, und wenn wir das ausführen |
| |
Wir können sehen, dass unsere neue DT-Variable tatsächlich auf die gewünschte Tabelle verweist und nicht davon beeinflusst wird, welche Tabelle aktuell ist. |
| |
Die Identifizierung einer Spalte mithilfe einer JSL-Variablen ist eine gängige Aufgabe. Welche Methode Sie verwenden, hängt von Ihrem Verwendungszweck ab. |
| |
Die Funktion „Spalte“ gibt eine Referenz auf die Spalte als Ganzes zurück. Sie akzeptiert verschiedene Argumente, z. B. ob der Spaltenname ein String oder eine Stringvariable ist. |
| |
ein Index oder eine numerische Variable, die einen Index darstellt. Sie kann indiziert werden, um auf den Spaltenwert einer bestimmten Zeile zu verweisen. |
| |
Sie können die Spaltenfunktion unter anderem in Plattformaufrufen, beim Senden von Nachrichten an eine Spalte oder beim Zuweisen einer Variablenreferenz zu einer Spalte verwenden. |
| |
Die Funktion as column gibt einen Verweis auf den Wert in der aktuellen Zeile zurück |
| |
der angegebenen Spalte. Es akzeptiert dieselben Argumente wie die Spaltenfunktion, es ist jedoch wichtig zu verstehen, dass in JMP die aktuelle Zeile immer Null ist, sofern nicht anders verwaltet. |
| |
Die Funktion „Als Spalte“ eignet sich gut für Formeln, „Für jede Zeile“ und „Wo auswählen“, da sie die Zeile steuern, indem sie diese durch ihr Design in jeder Zeile auswerten. Sehen wir uns also ein Beispiel an, was wir meinen. |
| |
Hier öffnen wir eine Beispieldatentabelle. Wir haben dem Namen einer Spalte eine JSL-Variable zugewiesen und versuchen, die Spaltenfunktion in unserem „Select Where“ zu verwenden. |
| |
Wenn wir dieses Skript ausführen, stellen wir fest, dass keine Zeilen ausgewählt wurden. Warum? Weil „select where“ für jede Zeile auswertet. |
| |
Die Verwendung der Spaltenfunktion ohne Index wählt keine Zeilen aus. Und wir erinnern uns, dass die Spaltenfunktion einen Verweis auf die Spalte als Ganzes zurückgibt, sodass eine ganze Datenspalte niemals 14 ergibt. |
| |
Die Lösung besteht also darin, die Spaltenfunktion mit einem Zeilenindex zu verwenden (und dieser Zeilenindex bedeutet einfach die aktuelle Zeile, was auch immer es ist, während die Auswahl „Where“ ausgewertet wird), oder Sie können die Spaltenfunktion „as“ verwenden, um Ihre Zeilen auszuwählen. |
| |
Die Verwendung einer JSL-Variablen in Formeln kann aus mehreren Gründen problematisch sein. Die Lebensdauer einer JSL-Variablen ist auf die aktuelle JMP-Sitzung beschränkt. Ändert sich der Wert der Variable, kann sich auch das Ergebnis der Formel ändern. |
| |
Und wenn Sie sich die Formel nicht im Formeleditor ansehen, erkennen Sie möglicherweise nicht, dass ein Problem vorliegt. |
| |
Schauen wir uns also unser Beispiel an. Hier öffne ich einfach eine Datentabelle und erstelle eine Liste der Spalten, die ich summieren möchte. |
| |
Ich erstelle meine neue Formelspalte und verwende meine JSL-Variable in meiner Summenfunktion. Führen wir das also aus. Wir sehen, dass unsere neue Spalte erstellt und mit Daten gefüllt wurde. Werfen wir jedoch einen Blick auf den Formeleditor. Wir haben nie erwähnt, dass unsere JSL-Variable in der Summenfunktion verwendet wurde. |
| |
Und als wir das verwarfen und eine Änderung an einer der abhängigen Spalten vornahmen, bemerkten wir auch, dass unsere Spaltenformel nicht automatisch aktualisiert wurde. |
| |
Speichern und schließen wir also JMP, speichern diese Tabelle und schließen JMP. |
| |
Und wir fangen wieder von vorne an. |
| |
Bedenken Sie, dass die Lebensdauer dieser JSL-Variable auf die vorherige JMP-Sitzung beschränkt war. Öffnen wir also die Tabelle und sehen uns an, was passiert. |
| |
Wir haben festgestellt, dass unsere Variablen-Spaltenformeln immer noch nicht ausgewertet wurden. Wenn wir uns das ansehen, sehen wir immer noch unsere JSL-Variable, aber jetzt mit einer roten Linie darunter. Wenn wir mit der Maus darüberfahren, sehen wir den Namen „ungelöster Fehler“. |
| |
Wenn wir versuchen, die Formel erneut auszuwerten, erhalten wir die Fehlermeldung. Das Ignorieren der Fehler führt dazu, dass alle unsere Daten als fehlend markiert werden. Wie können wir das also beheben? |
| |
Wenn Sie eine Variable in einer Formel verwenden, müssen Sie JMP anweisen, die Variable vor der Auswertung der Formel durch ihren Wert zu ersetzen. Sie können hierfür „substituieren“ verwenden. Heute zeigen wir Ihnen jedoch Ausdrucksfunktionen. Schließen wir also die Tabelle. |
| |
Wir öffnen eine neue Kopie der Tabelle und stellen unsere Spaltenliste wieder her. |
| |
Und jetzt schauen wir uns an, wie wir das umgehen. |
| |
Die Ausdrucksfunktion „eval“ weist JMP an, alle darin enthaltenen Variablen auszuwerten und zu ersetzen … in seinem Argument, die in eine EXPR-Funktion eingeschlossen sind. |
| |
Anschließend wird der nicht ausgewertete Ausdruck zurückgegeben. In diesem Code ersetzt JMP den Ausdruck „SAT-Ergebnisse“ durch unsere Spaltenliste. |
| |
Lassen Sie uns also nur diesen Abschnitt ausführen und sehen, was passiert. Und wir sehen, dass die Summenfunktion jetzt unsere Liste der Spalten enthält, die wir summieren möchten, anstatt der Variablen. |
| |
Die Spalte wurde jedoch nicht für uns erstellt. Es wurde lediglich dieser Ausdruck zurückgegeben. Um dies auszuwerten, fügen wir unserer Eval-Ausdrucksfunktion eine Eval-Funktion hinzu. |
| |
Dies führt dazu, dass JMP den gesamten neuen Spaltenausdruck nach dem Ersetzen auswertet. In der E-Mail heißt es also: „Führen Sie aus, was der Eval-Ausdruck zurückgibt, und zwar Folgendes.“ |
| |
Lassen Sie es uns also ausführen. Wir können sehen, dass unsere Spalte jetzt erstellt wurde und wir die Daten wie erwartet haben. |
| |
Und unsere Formel enthält nicht mehr unsere Variable, sondern unsere Spaltenliste. |
| |
Und wenn wir eine Änderung an den Daten in einer abhängigen Spalte vornehmen, wird unsere Formel jetzt automatisch aktualisiert. |
| |
Ich übergebe jetzt an Justin, der über ein paar weitere Fehler sprechen wird, die es zu vermeiden gilt. |
| Justin Chilton |
Okay, ein weiterer Fehler, den wir beobachten, ist das Festlegen von Spalteneigenschaften. Die Syntax kann etwas knifflig sein. Bevor wir ins Detail gehen, |
| |
Lassen Sie uns darüber sprechen, was eine Spalte im Hinblick auf die Spalteneigenschaften ist. Im Wesentlichen ist eine Spalte nur ein |
| |
Repository für diese Eigenschaftsinformationen. Es wird keine Syntaxprüfung durchgeführt, um sicherzustellen, dass |
| |
Ihre Eingaben sind korrekt und ermöglichen die Speicherung von allem, was Sie möchten. Der Grund hierfür liegt darin, dass der Benutzer der Eigenschaft ein bestimmtes Format erwartet, sei es eine JMP-Plattform, die Verwendung einer Spalteneigenschaft oder sogar eine JSL-Anwendung. |
| |
Sehen wir uns also ein kurzes Beispiel an. |
| |
Hier öffnen wir eine Tabelle mit dem Namen „Spalteneigenschaften“, nur zum Testen. Wir haben eine Spalte namens „NPN1“ und eine Spalte namens „Test“. Diese Spalte hat Spezifikationsgrenzen und eine Zugriffseigenschaft, aber wir möchten |
| |
Fügen Sie die Spezifikationsgrenzwerte zum Test hinzu. Wir haben hier also, was wir denken |
| |
ist die korrekte Syntax zum Festlegen der Eigenschaften der Spalte „Spec Limits“. Wir führen dies aus und erhalten keinen Fehler, aber wenn wir |
| |
Schauen Sie sich die Spalte an. Für diese Spalte gelten Spezifikationsgrenzen. |
| |
Und das kann man, aber man merkt, dass es nicht korrekt ist. Als wir eine Prozessfähigkeitsanalyse mit unseren Spezifikationsgrenzen anforderten, |
| |
Wenn wir das ausführen, erhalten wir zwar einen Wert für NPN1, aber nicht einen für die Testspalte. Das liegt daran, dass die in der Eigenschaft „Spezifikationsgrenzen“ für die Testspalte gespeicherten Werte nicht korrekt sind. |
| |
Eine Möglichkeit, dies zu tun, wenn Sie bereits wissen, wie Sie die Spezifikationsgrenzen der festgelegten Eigenschaften verwenden, |
| |
Sie können die Eigenschaftsnachricht einfach an die Spalte NPN1 senden. Dies ist die Spalte, von der wir wissen, dass sie korrekt ist. Wenn wir also nur diese eine Zeile ausführen, erhalten wir die korrekte Syntax. |
| |
Und das zeigt uns tatsächlich, dass dies eigentlich in Listenform und nicht in Form separater Argumente erfolgen sollte. Wenn Sie mit der Get-Eigenschaft nicht vertraut sind, können Sie alternativ zur Spalte gehen, von der Sie wissen, dass sie korrekt ist, und die Spalteneigenschaften kopieren. |
| |
Anschließend können Sie das in Ihr Skript einfügen. Sie werden sehen, dass Sie Spalteneigenschaften sowie einige festgelegte Eigenschaften hinzugefügt haben. Das Hinzufügen von Spalteneigenschaften ist also nur eine Möglichkeit, mehrere festgelegte Eigenschaften zu bündeln. Wir können das entfernen und den zusätzlichen Zugriff entfernen. |
| |
Eigenschaft. Sobald wir das entfernt haben, können wir diese festgelegte Eigenschaft verwenden, um sie mit dem Sendeoperator an unsere Testspalte zu senden. Wenn wir das jetzt ausführen, |
| |
wir...es...es hat unsere Spezifikationsgrenzen überschrieben, aber wir können das bestätigen, indem wir dieselbe Verteilung mit unseren Spezifikationsgrenzen ausführen. |
| |
Sie sehen hier, dass wir für beide Spalten unsere Prozessfähigkeitsanalyse haben. Dies ist nur ein Beispiel für die Ermittlung von Spezifikationsgrenzen. Dasselbe gilt jedoch für jede Spalteneigenschaft, die Sie anwenden und deren Syntax in JSL abrufen müssen. |
| |
Der nächste Fehler, über den wir sprechen werden, ist die Manipulation von Dispatch-Befehlen. Was ist also ein Dispatch-Befehl? |
| |
Es ist das, was in Ihrem gespeicherten Skript angezeigt wird, wenn Sie im roten Dreieckmenü die Option „Im Skriptfenster speichern“ oder „In der Zwischenablage speichern“ auswählen. |
| |
Und es erscheint, wenn Sie etwas wie eine Referenzlinie hinzufügen oder etwas anderes ändern, wie z. B. das Schließen eines Umrissfelds. Dieser Befehl wurde als interne Methode für JMP entwickelt, um Diagramme neu erstellen zu können. |
| |
mit der Anpassung, die Sie vorgenommen haben. Und es war nicht geplant, dass Benutzer |
| |
Passen Sie dies mit dynamischen Variablen an. Das bedeutet, dass einige Argumente im Dispatch-Befehl keine JSL-Variablen akzeptieren. Schauen wir uns ein Beispiel an, wo das passieren könnte. Hier ist ein Skript. Wir haben ein |
| |
Tabelle und eine String-Variable, die wir später verwenden werden. Und das ist im Wesentlichen das, was das Fenster „Im Skript speichern“ zurückgibt. Wenn wir das also ausführen, |
| |
Wir können sehen, dass unser Dispatch-Befehl, der das Minimum, Maximum und Inkrement für die Messachse festlegt, |
| |
hier ist von Null auf 1,4 eingestellt. Jetzt können wir sehen, dass der Dispatch-Befehl auf dem |
| |
Der Titel der Gliederungsbox basiert hier auf unserer Y-Eingabe. Nehmen wir also an, wir möchten eine dynamische Benutzereingabe und haben nur diese Variable. Wir könnten diese Variable für das Y verwenden. |
| |
Aber dann müssten wir auch den Namen dieser Spalte hier verwenden. Wenn wir das also ausführen, werden Sie sehen, dass wir nicht die richtigen Achseneinstellungen 0,4 bis 1,2 erhalten, was nicht... das bedeutet, dass das, was wir gesendet haben, nicht verarbeitet wurde. |
| |
Es gibt verschiedene Möglichkeiten, dies zu erreichen. Die erste ist die Verwendung der Eval-Ausdruckslösung, über die Wendy vorhin gesprochen hat. Hier sehen Sie, wir haben denselben Eval-Ausdruck. Wir möchten die Verkettung, die wir im vorherigen Beispiel versucht haben, umschließen. |
| |
Hier. |
| |
Der Ausdruck eval wird also das Ganze auswerten. Wenn wir also eval EXPR ausführen, |
| |
es ersetzt einfach das Ganze durch unsere verkettete Zeichenfolge und dann, denken Sie daran, wenn wir die Auswertung durchführen, |
| |
Es führt diesen Ausdruck aus. Hier haben wir also 0 bis 1,4. Das ist also eine Möglichkeit. |
| |
Aber manchmal kann es trotzdem etwas knifflig werden. Und wie man diese Dispatch-Befehle wirklich manipuliert, da man sie ja immer noch verwendet und wissen muss, wie sie funktionieren. Die gängigste Methode hierfür ist, diesen Dispatch-Befehl komplett zu entfernen. |
| |
Verwenden Sie also das sogenannte Display Box Subscripting. Hier führe ich dies mit dem entfernten Dispatch-Befehl aus und wir haben unsere ursprünglichen Achseneinstellungen. |
| |
Und dann machen wir Folgendes, bevor wir es uns ansehen, ohne es zu wissen. Wir gehen zu diesem Symbol, diesem Umrissfeld, und klicken mit der rechten Maustaste |
| |
Bearbeiten und Baumstruktur anzeigen. Dies zeigt uns die Baumstruktur des Anzeigefelds innerhalb dieses Gliederungsfelds. Innerhalb dieses Gliederungsfelds sehen Sie, dass dieses Achsenfeld dasjenige ist, das wir ändern möchten. Innerhalb dieses Gliederungsfelds befindet sich also das Achsenfeld 1. |
| |
Dann können wir unser Skript schreiben. Wir verwenden diese Berichtsfunktion, um die Berichtsebene der Plattform, OBJ1, abzurufen. |
| |
Dann führen wir ein Indiz durch, um den Titel der Gliederungsbox zu erhalten, der unserer Kenntnis nach auf der Grundlage unseres Spaltennamens lauten sollte. |
| |
Und innerhalb dessen möchten wir ... und wir möchten so spezifisch wie möglich sein, sodass die Wahrscheinlichkeit geringer ist, dass Probleme auftreten, wenn sich in einer zukünftigen Version von JMP etwas ändert. |
| |
Darin möchten wir also die Achsenbox 1 und so erhalten wir diese Achsenbox. Anschließend können wir dieselben Informationen aus dem Dispatch-Befehl nehmen und sie einfach in die Nachrichten umwandeln, die wir an die Achsenbox senden. |
| |
Und dann können Sie hier sehen, dass unsere Achseneinstellungen jetzt von null bis 1,4 reichen. |
| |
Eine weitere, leistungsfähigere Methode hierfür ist XPath. Es funktioniert genauso, ist aber möglicherweise etwas komplizierter, bietet aber auch mehr Flexibilität für zukünftige JMP-Versionen, da Sie zugrunde liegende Daten zu einer Box verwenden können. |
| |
Der letzte Fehler, den wir besprechen werden, ist die ausschließliche Verwendung des globalen Namespace. |
| |
Sie wissen es vielleicht nicht, aber wenn Sie ein Symbol erstellen, ohne anzugeben, wohin es gehört, wird es in den globalen Namespace verschoben. Das ist ideal für schnelle Skripte, wenn Sie nur etwas für den persönlichen Gebrauch erstellen. |
| |
Dies ist jedoch möglicherweise keine gute Idee für Skripte, die Sie an Kollegen senden, oder für Skripte, die Sie veröffentlichen, oder für Add-Ins, die Sie in der Community veröffentlichen. |
| |
Hier sind ein paar weitere Details zur Funktionsweise von Scope und Namenssuche in JMP. Beginnen Sie unten in diesem Diagramm. Der lokale Scope kann eine beliebige Anzahl von Scopes umfassen, mit denen Funktionen und lokale Felder verknüpft sind. |
| |
Wenn darüber hinaus das Symbol nicht gefunden wird oder Sie nicht angegeben haben, dass es lokal gespeichert werden soll, je nachdem, ob Sie schreiben oder lesen, |
| |
Dann gibt es den Bereich „hier“, der im Wesentlichen einmal pro Datei existiert. Und es gibt den globalen Bereich, der im Wesentlichen ein Bereich für Ihre JMP-Sitzung ist. Und dann rechts haben wir den Namespace-Bereich, den Sie explizit suchen müssen, um |
| |
Zugriff. Schauen wir uns ein Beispiel an. Das löscht einfach alle meine Symbole, und da ich nicht angegeben habe, wohin sie gehen sollen, werden sie in Globals verschoben. Also ist x 5. Aber was ist, wenn jemand anderes ein Skript hat, das sagt: „Nun, ich habe auch |
| |
habe eine |
| |
Variable x, die ich verwenden möchte. Ich werde nicht angeben, wo sie platziert werden soll. Also setze ich sie auf 10. |
| |
Aber wenn Sie dann zu Ihrem Skript zurückkehren, ist dies vielleicht eine Variable, die Sie festgelegt haben, und dann haben Sie einen Rückruf auf einer Schaltfläche ... Schaltfläche |
| |
Aktion, die auf dieser Variable basiert. Dann versuchen Sie, sie zu verwenden, und die Variable hat sich geändert, was wahrscheinlich nicht erwünscht ist. |
| |
Wie können wir das Problem lösen? Am einfachsten ist es, Namen standardmäßig auf here(1) zu setzen. Das bedeutet, dass nichts im globalen Bereich landet, es sei denn, Sie weisen es explizit an, dorthin zu gehen. Schauen wir uns das mal an. |
| |
an diesem |
| |
Beispiel. Wir haben lediglich den Namen default zu here(1) hinzugefügt. Er kann mit … normalerweise steht er am Anfang Ihres Skripts, aber er kann überall stehen. |
| |
Ich werde meine Symbole bereinigen und diese Variable x gleich 5 setzen. Dann haben wir hier noch eine andere Schriftstelle, die |
| |
Das bedeutet, ich möchte auf dein x zugreifen. Aber dieses x kann in diesem Namespace niemals auf dieses x zugreifen. Also |
| |
Kopieren wir einen Teil des Skripts und setzen wir X gleich 50. |
| |
Und dann ist das X in der rechten Schrift 50, aber das hatte keine Auswirkungen auf das X in unserer linken Schrift. Das ist also eine großartige Möglichkeit, Ihre Symbole einfach von anderen Schriften und Anwendungen zu trennen. |
| |
Die andere Möglichkeit ist die Verwendung eines benutzerdefinierten Namespaces. Das ist etwas komplexer, kann aber sehr leistungsfähig sein. Also, hier bin ich wieder... lösche meine |
| |
Symbole und dann einen neuen Namespace erstellen, eine Variable x innerhalb des Namespace einrichten und anzeigen. Sie hat also den Wert fünf. |
| |
Und Sie haben hier noch ein weiteres Skript. Vielleicht ist dies eines Ihrer Skripte und Sie wissen, dass |
| |
myNS existiert. Sie können also versuchen, darauf zuzugreifen, und das funktioniert problemlos, da Sie den Namen kennen. Es ist jedoch viel unwahrscheinlicher, dass jemand Ihr Symbol ohne Ihr Wissen ändert. Also |
| |
Ich kann dieses Symbol ändern und es bleibt immer noch 10, aber wenn ich nur X mache, hat das keine wirklichen Auswirkungen auf das Ergebnis des X aus dem Namespace. |
| |
Ich gebe das Wort wieder an Wendy weiter, die uns von einigen übersehenen Ressourcen erzählen wird. |
| wendymurphrey |
Vielen Dank, Justin. Es gibt viele Ressourcen, um mehr über JSL zu erfahren, viele davon sind kostenlos. Hier haben wir einige der gängigsten Quellen für Sie verlinkt, um mehr über JSL zu erfahren. |
| |
Wir bieten Ihnen auch technischen Support und einige Bücher zum Thema. Natürlich empfehlen wir Ihnen auch, einen Blick auf unsere Schulungsmaterialien und die dort bereitgestellten Pläne zu werfen. |
| |
Schauen Sie sich unbedingt das zugehörige Dokument der JMP-Community an. Dort haben wir noch einige weitere Fehler behandelt, die wir heute leider nicht mehr besprechen konnten. Vielen Dank fürs Zuschauen. |