Lautsprecher | Transkript |
| wendymurphrey | Hallo und vielen Dank, dass Sie heute an unserer Präsentation teilgenommen haben. Wir freuen uns, mit Ihnen über häufige Szenarien zu sprechen, denen Drehbuchautoren mit unterschiedlichem Erfahrungsniveau begegnen. |
| Unser Ziel ist es, zu erklären, was passiert, damit Sie über die Werkzeuge und das Wissen verfügen, um diese Fehler zu vermeiden. Also lasst uns anfangen. |
| Vielleicht vergisst man leicht, das Protokoll auf Nachrichten zu überprüfen, weil es standardmäßig nicht geöffnet ist. Das Protokoll enthält jedoch nützliche Informationen zu den letzten Skriptausführungen. 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, |
| Wir erhalten eine interaktive Fehlermeldung für den schwerwiegenden Fehler, d. h. für die Situationen, in denen Ihr Skript aufgrund des Fehlers stoppt. Das Popup-Fenster ist ein neues Verhalten für JMP 15 und kann in den Einstellungen deaktiviert werden. |
| Wenn wir diese Nachricht verwerfen, können wir das Protokoll überprüfen und sehen dieselbe Nachricht im Fenster, aber wir sehen auch die Zeilennummer |
| Finden Sie den Namen der Skriptdatei, um uns zum Problembereich zu führen. Verlassen Sie sich jetzt nicht nur auf diese Popup-Fenster, denn auch andere wichtige Meldungen werden im Protokoll angezeigt. |
| und sie verursachen nicht unbedingt ein Popup-Fenster. Schauen wir uns also ein anderes Beispiel an. |
| In diesem Skript versucht der Autor, eine Tabelle zu öffnen, eine Analyse zu erstellen und eine Nachricht im 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 fuhr fort und druckte unsere Nachricht in das Protokoll. |
| Daher ist es hier wichtig, immer das Protokoll zu überprüfen, insbesondere wenn das, was passiert, nicht Ihren Erwartungen entspricht. Es könnte so einfach sein wie ein falsch geschriebener Spaltenname. |
| Das Konzept der aktuellen Datentabelle wird oft als aktive Tabelle beschrieben. Aber was macht die Tabelle zur aktiven oder aktuellen Datentabelle und warum ist sie für Ihr Skript wichtig? |
| Wenn eine Tabelle geöffnet, erstellt oder anderweitig bearbeitet wird, wird sie zur aktuellen Datentabelle. Es gibt aber auch andere Möglichkeiten, wie eine Tabelle zur Laufzeit aktuell werden kann, mit denen Sie als Skriptautor möglicherweise nicht gerechnet haben. |
| Ihre Aufgaben, die JMP im Hintergrund verarbeitet. Beispielsweise muss JMP möglicherweise eine Formel auswerten oder ein Fenster aktualisieren. |
| Es sind diese Hintergrundprozesse, die dazu führen können, dass zur Laufzeit eine andere Tabelle aktiv wird als die, die Sie beabsichtigt haben. Und das kann dazu führen, dass Ihr Skript fehlschlägt oder, schlimmer noch, Sie bemerken nicht einmal, dass JMP die falsche Tabelle verwendet hat. |
| Deshalb haben wir hier einige bereitgestellt |
| Best Practices zum Erstellen Ihrer Skripte mithilfe datentabellenspezifischer Referenzen. So stellen Sie sicher, dass die richtige Tabelle verwendet wird, unabhängig davon, welche Tabelle zur Laufzeit aktiv ist. |
| In diesem Beispiel demonstrieren 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 Datentabellenverweise verwenden. Hier zeigen wir nur, wie Sie dies zum Referenzieren von Spalten verwenden können, und wir werden gleich ausführlicher auf das Referenzieren von Spalten eingehen. |
| Sie können in Funktionen auch optionale Datentabellenverweise verwenden; Für jede Zeile und jede Zusammenfassung gibt es zwei, sofern dies verfügbar ist. |
| Wir möchten Ihnen außerdem empfehlen, die Verwendung einer Datentabelle zu vermeiden und eine Datentabellenreferenz mithilfe der aktuellen Datentabellenfunktion in Ihren Produktionsskripten zuzuweisen. In diesem Beispiel verknüpfen wir zwei Datentabellen und möchten dieser Tabelle eine Referenz zuweisen |
| das wird aus dem Join erstellt. Join gibt nun einen Verweis auf die neu erstellte Tabelle zurück. Anstatt also eine Zuweisung zur aktuellen Datentabelle vorzunehmen, möchten wir die Referenz zuweisen, wenn der Join erstellt wird. |
| Hier nehmen wir also einfach unsere Zuweisung vor, wenn wir den Join aufrufen und diesen ausführen |
| Wir können sehen, dass unsere neue DT-Variable tatsächlich auf die Wunschtabelle verweist und nicht davon abhängt, welche Tabelle aktuell ist. |
| Die Identifizierung einer Spalte mithilfe einer JSL-Variablen ist eine häufige Aufgabe und welche Methode Sie verwenden, hängt von Ihrem Verwendungszweck ab. |
| Die Spaltenfunktion gibt einen Verweis auf die Spalte als ganze Einheit zurück. Es akzeptiert eine Vielzahl von Argumenten, z. B. ist der Spaltenname ein String oder eine String-Variable. |
| ein Index oder eine numerische Variable, die einen Index darstellt. Es kann indiziert werden, um auf den Spaltenwert in einer bestimmten Zeile zu verweisen. |
| Einige Stellen, an denen Sie die Spaltenfunktion verwenden können, sind Plattformaufrufe, das Senden von Nachrichten an eine Spalte oder das Zuweisen einer Variablenreferenz zu einer Spalte. |
| Die as-Spaltenfunktion gibt einen Verweis auf den Wert in der aktuellen Zeile zurück |
| der angegebenen Spalte. Sie 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. |
| Daher gibt es einige gute Orte, an denen sich die Funktion „als Spalte“ in Formeln für jede Zeile verwenden lässt, und wählen Sie „wo“ aus, da sie durch ihr Design die Zeile steuern, während sie in jeder Zeile ausgewertet werden. Schauen 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 nun dieses Skript ausführen, stellen wir fest, dass keine Zeilen ausgewählt wurden. Warum das? Da Sie auswählen, wo in jeder Zeile ausgewertet wird, |
| Wenn Sie die Spaltenfunktion ohne Index verwenden, werden keine Zeilen ausgewählt. Und wir erinnern uns, dass die Spaltenfunktion einen Verweis auf die Spalte als ganze Einheit zurückgibt, sodass eine ganze Datenspalte niemals gleich 14 sein wird. |
| Die Lösungen bestehen also darin, die Spaltenfunktion mit einem Zeilenindex zu verwenden (und dieser Zeilenindex bedeutet einfach die aktuelle Zeile, was auch immer sie ist, während die Funktion „Auswählen wo“ auswertet), oder Sie können die Funktion „as Column“ verwenden, um Ihre Zeilen auszuwählen. |
| Die Verwendung einer JSL-Variablen in Formeln kann aus mehreren Gründen problematisch sein. Die Lebensdauer einer JSL-Variable ist auf die aktuelle JMP-Sitzung begrenzt, und wenn sich der Wert der Variablen ändert, kann sich auch das Ergebnis der Formel ändern. |
| Und wenn Sie sich die Formel nicht im Formeleditor ansehen, erkennen Sie möglicherweise nicht, dass Sie ein Problem haben. |
| 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. Lassen Sie uns das also ausführen. Und wir können sehen, dass unsere neue Spalte erstellt und mit Daten gefüllt wurde. Aber werfen wir einen Blick auf den Formeleditor. Wir haben nie gesagt, dass unsere JSL-Variable in der Summenfunktion verwendet wird. |
| Und als wir das verwarfen und eine Änderung an einer der abhängigen Spalten vornahmen, stellten wir auch fest, dass unsere Spaltenformel nicht automatisch aktualisiert wurde. |
| Speichern und schließen wir also JMP, speichern Sie diese Tabelle und schließen Sie JMP. |
| Und wir fangen wieder von vorne an. |
| Bedenken Sie nun, dass die Lebensdauer dieser JSL-Variablen auf die vorherige JMP-Sitzung beschränkt war. Öffnen wir also die Tabelle und schauen uns an, was passiert. |
| Wir haben festgestellt, dass unsere Variablenspaltenformeln immer noch nicht erneut ausgewertet wurden. Wenn wir uns das ansehen, sehen wir immer noch unsere JSL-Variable darin, aber jetzt haben wir eine rote Linie darunter. Und wenn wir mit der Maus darüber fahren, sehen wir den Fehler „Name ungelöst“. |
| Wenn wir versuchen, die Formel erneut auszuwerten, erhalten wir die Fehlermeldung und das Ignorieren der Fehler führt dazu, dass alle unsere Daten in „fehlend“ geändert werden. Wie können wir das beheben? |
| Wenn Sie eine Variable in einer Formel verwenden, müssen Sie JMP anweisen, die Variable durch ihren Wert zu ersetzen, bevor die Formel ausgewertet wird. Sie können hierfür „substitute“ verwenden, aber heute werden wir Ausdrucksfunktionen demonstrieren. Schließen wir also diese Tabelle. |
| Wir öffnen eine neue Kopie der Tabelle und stellen unsere Spaltenliste wieder her. |
| Schauen wir uns nun an, wie wir dieses Problem umgehen. |
| Die Ausdrucksfunktion „eval“ weist JMP also an, alle darin enthaltenen Variablen auszuwerten und zu ersetzen … in ihrem Argument, die in eine EXPR-Funktion eingeschlossen sind. |
| Und dann wird der nicht ausgewertete Ausdruck zurückgegeben. In diesem Code wird JMP also den Ausdruck „SAT-Scores“ durch unsere Spaltenliste ersetzen. |
| Lassen Sie uns also nur diesen Abschnitt durchgehen und sehen, was passiert. Und wir sehen, dass die Summenfunktion jetzt anstelle der Variablen unsere Liste der Spalten enthält, die wir summieren möchten. |
| Aber es hat die Kolumne nicht wirklich für uns erstellt. Es wurde einfach dieser Ausdruck zurückgegeben. Um das auszuwerten, fügen wir unserer Ausdrucksfunktion „eval“ eine Bewertungsfunktion hinzu. |
| Dies führt dazu, dass JMP den gesamten neuen Spaltenausdruck auswertet, nachdem die Ersetzung erfolgt ist. In der E-Mail heißt es also im Wesentlichen: Führen Sie Folgendes aus: Führen Sie aus, was vom Auswertungsausdruck zurückgegeben wird, und zwar Folgendes. |
| Lassen Sie es uns also ausführen und wir können sehen, dass unsere Spalte jetzt erstellt wurde und wir die erwarteten Daten 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. |
| Jetzt werde ich dies an Justin weitergeben, um über ein paar weitere Fehler zu sprechen, die es zu vermeiden gilt. |
| Justin Chilton | Okay, ein weiterer Fehler, den wir beobachten, ist der, wenn sie Spalteneigenschaften festlegen und die Syntax etwas knifflig sein kann. Bevor wir also auf die Details eingehen, |
| Lassen Sie uns darüber sprechen, was eine Spalte im Hinblick auf die Spalteneigenschaften ist. Im Wesentlichen ist eine Spalte also nur eine |
| Repository für diese Eigenschaftsinformationen. Um dies sicherzustellen, wird keine Syntaxprüfung durchgeführt |
| was Sie ihm geben, ist korrekt und das ermöglicht ihm, alles zu speichern, was Sie möchten. Dies bedeutet, dass der Verbraucher der Eigenschaft erwartet, dass etwas in einem bestimmten Format vorliegt, sei es eine JMP-Plattform, die Verwendung einer Spalteneigenschaft oder sogar eine JSL-Anwendung. |
| Schauen wir uns also ein kurzes Beispiel an. |
| Und hier werden wir nur zum Testen eine Tabelle öffnen, die wir Spalteneigenschaften genannt haben. Wir haben eine Spalte namens NPN1 und eine Spalte namens test. Und diese Spalte hat Spezifikationsgrenzen und eine Zugriffseigenschaft, aber das wollen wir |
| Fügen Sie die Spezifikationsgrenzeigenschaften zum Testen hinzu. Wir haben also hier, was wir denken |
| ist die richtige Syntax zum Festlegen der Spalteneigenschaften für Spezifikationsgrenzen. Wir führen dies aus und geben uns keinen Fehler, aber wenn wir |
| Schauen Sie sich die Spalte an, es gibt Spezifikationsbeschränkungen für diese Spalte. |
| Und das können Sie, aber man merkt, dass es nicht stimmt. Als wir nach einer Prozessfähigkeitsanalyse mit unseren Spezifikationsgrenzen fragten, |
| Wenn wir das ausführen, erhalten wir zwar einen für NPN1, aber keinen für die Testspalte. Das liegt daran, dass die Angaben in der Eigenschaft „Spezifikationsgrenzen“ für die Testspalte nicht korrekt sind. |
| Eine Möglichkeit, dies zu tun, wenn Sie bereits wissen, wie Sie die Spezifikationsgrenzen für festgelegte Eigenschaften verwenden: |
| Sie können die Eigenschaftsnachricht einfach an die Spalte NPN1 senden, die Spalte, von der wir wissen, dass sie korrekt ist. Wenn wir also nur diese eine Zeile ausführen, erhalten wir die richtige Syntax. |
| Und das zeigt uns tatsächlich, dass dies wirklich in Listenform und nicht in separaten Argumenten erfolgen sollte. Wenn Sie also mit der get-Eigenschaft nicht vertraut sind, können Sie auch zu der Spalte gehen, von der Sie wissen, dass sie korrekt ist, und die Spalteneigenschaften kopieren. |
| Und dann können Sie das in Ihr Skript einfügen und sehen, dass Sie sowohl Spalteneigenschaften hinzufügen als auch einige Eigenschaften festlegen müssen. Das Hinzufügen von Spalteneigenschaften ist also nur eine Möglichkeit, mehrere Eigenschaftensätze zusammenzufassen. Wir können das entfernen und wir können den zusätzlichen Zugriff entfernen |
| Eigentum. Sobald wir das entfernt haben, können wir diese Set-Eigenschaft verwenden, um sie mit dem Sendeoperator an unsere Testspalte zu senden. Wenn wir das jetzt ausführen, |
| Wir ... es ist ... es hat unsere Spezifikationsgrenzen überschrieben, aber wir können das bestätigen, indem wir dieselbe Distribution unter Verwendung unserer Spezifikationsgrenzen ausführen. |
| Und Sie können hier sehen, dass wir unsere Prozessfähigkeitsanalyse für beide unserer Säulen haben. Das ist also nur ein Beispiel dafür, wie man Spezifikationsgrenzen erhält, aber das Gleiche kann für jede Spalteneigenschaft gelten, die Sie anwenden und deren Syntax in JSL abrufen müssen. |
| Der nächste Fehler, über den wir sprechen werden, ist die Manipulation von Versandbefehlen. Was ist also ein Versandbefehl? |
| Es ist das, was in Ihrem gespeicherten Skript angezeigt wird, wenn Sie das Menü „Im Skript speichern“ oder „In der Zwischenablage speichern“ des Menüs mit dem roten Dreieck ausführen. |
| Und es wird angezeigt, wenn Sie beispielsweise eine Referenzlinie hinzufügen oder etwas anderes ändern, beispielsweise das Schließen eines Umrissrahmens. Und dieser Befehl wurde als interne Möglichkeit für JMP entwickelt, Diagramme neu erstellen zu können |
| mit der von Ihnen vorgenommenen Anpassung. Und das war für die Benutzer auch nicht geplant |
| Passen Sie dies mit dynamischen Variablen an. Das bedeutet also, dass einige der Argumente im Dispatch-Befehl keine JSL-Variablen akzeptieren. Schauen wir uns also ein Beispiel an, wo das passieren könnte. Hier ist also ein Skript. Wir haben ein |
| Tabelle und eine String-Variable, die etwas später verwendet wird. Und das ist im Wesentlichen das, was das Fenster „Im Skript speichern“ zurückgeben würde. Wenn wir das also ausführen, |
| Wir können sehen, dass unser Dispatch-Befehl das Min. Max. und das Inkrement für die Messachse festlegt |
| hier wird von Null auf 1,4 eingestellt. Jetzt können wir sehen, dass der Dispatch-Befehl auf dem basiert |
| Hier wird der Titel des Gliederungsfelds angezeigt, aber dieser Titel des Gliederungsfelds basiert tatsächlich auf unserer y-Eingabe. Angenommen, wir wollten, dass dies eine dynamische Eingabe eines Benutzers ist, und alles, was wir haben, ist diese Variable. Wir könnten die Variable für das Y verwenden. |
| Aber dann müssten wir hier auch den Namen dieser Spalte verwenden. Wenn wir das also ausführen, werden Sie tatsächlich feststellen, dass wir nicht die richtigen Achseneinstellungen von 0,4 bis 1,2 erhalten, was nicht der Fall ist ... das bedeutet, dass das, was wir gesendet haben, nicht verarbeitet wurde. |
| Es gibt also mehrere Möglichkeiten, dieses Problem anzugehen. Und die erste wird die Eval-Expression-Lösung verwenden, über die Wendy vor ein paar Minuten gesprochen hat. Hier sehen Sie also, dass wir denselben Auswertungsausdruck haben. Eigentlich wollen wir die Verkettung umschließen, die wir im vorherigen Beispiel versucht haben |
| Hier. |
| Und so wird der eval-Ausdruck sagen: Bewerte die ganze Sache. 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 sollten Sie diese Dispatch-Befehle wirklich manipulieren, da Sie die Dispatch-Befehle immer noch verwenden und wissen müssen, wie sie funktionieren? Die häufigste Vorgehensweise besteht darin, diesen Dispatch-Befehl vollständig zu entfernen. |
| Verwenden Sie also das, was wir Display-Box-Subskription nennen. Hier führe ich dies also mit dem entfernten Dispatch-Befehl aus und wir haben unsere ursprünglichen Achseneinstellungen. |
| Und was wir dann tun werden, ist, bevor wir nicht wirklich wissen, wie wir das schreiben sollen, nur weil wir es uns ansehen. Wir gehen also zu diesem Symbol, diesem Gliederungsfeld, und klicken mit der rechten Maustaste |
| Baumstruktur bearbeiten und anzeigen. Dies zeigt uns also die Baumstruktur des Anzeigefelds innerhalb dieses Umrissfelds und innerhalb dieses Umrissfelds können Sie sehen, dass dieses Axix-Feld dasjenige ist, das wir ändern möchten. Innerhalb dieses Umrissrahmens befindet sich also Achsenkasten eins. |
| Dann können wir loslegen und unser Drehbuch schreiben. Wir verwenden diese Berichtsfunktion, um die Berichtsebene der Plattform, OBJ1, abzurufen. |
| Dann subskriptieren wir, um den Titel des Gliederungsfelds zu erhalten, von dem wir wissen, dass er basierend auf unserem Spaltennamen lauten sollte. |
| Und innerhalb dessen wollen wir ... und wir wollen so spezifisch wie möglich sein, damit es weniger wahrscheinlich ist, dass wir Probleme haben, wenn sich in einer zukünftigen Version von JMP etwas ändert. |
| Darin wollen wir also Achsenbox 1 und so erhalten wir diese Achsenbox, und dann können wir dieselben Informationen aus dem Dispatch-Befehl übernehmen und sie einfach in die Nachrichten umwandeln, die wir an die Achsenbox senden. |
| Und dann können Sie hier sehen, dass unsere Achseneinstellungen jetzt zwischen Null und 1,4 liegen. |
| Eine weitere leistungsfähigere Möglichkeit hierfür ist die Verwendung von XPath. Es macht das Gleiche, kann aber etwas komplizierter sein, bietet aber auch mehr Flexibilität für Dinge in zukünftigen Versionen von JMP, da Sie zugrunde liegende Daten zu einer Box verwenden können. |
| Der letzte Fehler, den wir besprechen werden, besteht also darin, nur den globalen Namespace zu verwenden. Also |
| Sie wissen es vielleicht nicht, aber wenn Sie ein Symbol erstellen, ohne anzugeben, wo es hingehört, wird es in den globalen Namensraum verschoben. Das eignet sich also hervorragend für schnelle Skripte, wenn Sie nur etwas für Ihren persönlichen Gebrauch entwerfen. |
| 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 ein paar weitere Details zur Funktionsweise von Scoping und Namenssuche in JMP. Sie beginnen hier in diesem Diagramm ganz unten. Der lokale Bereich kann eine beliebige Anzahl von Bereichen sein, bei denen es sich um Funktionen und lokale Boxen handelt. |
| Wenn das Symbol darüber nicht gefunden wird oder Sie nicht angegeben haben, dass es lokal angezeigt wird, je nachdem, ob Sie schreiben oder lesen, |
| Dann gibt es noch den Bereich „hier“, und dieser existiert im Wesentlichen einmal pro Datei. Und es gibt einen globalen Bereich, der im Wesentlichen ein Bereich für Ihre JMP-Sitzung ist. Und dann rechts haben wir den Namespace-Bereich, nach dem Sie wirklich explizit suchen müssen |
| Zugang. Schauen wir uns ein Beispiel an. Dadurch werden lediglich alle meine Symbole gelöscht, und da ich nicht angegeben habe, wohin sie verschoben werden sollen, werden sie in die globalen Symbole verschoben. Also ist x 5. Aber was ist, wenn jemand anderes ein Drehbuch hat, das so aussieht, nun ja, ich auch |
| habe einen |
| Variable x, die ich verwenden möchte. Und ich werde nicht angeben, wo ich es hinstellen soll. Also werde ich es auf 10 setzen. |
| Aber wenn Sie dann zu Ihrem Skript zurückkehren, ist das vielleicht eine Variable, die Sie festgelegt haben, und dann haben Sie einen Rückruf auf einer Schaltfläche ... Schaltfläche |
| Wenn Sie eine Aktion ausführen, die auf dieser Variablen basiert, verwenden Sie sie und die Variable hat sich bei Ihnen geändert, und das ist wahrscheinlich nicht erwünscht. |
| Wie können wir dem also begegnen? Der einfachste Weg, dies zu tun, besteht darin, die Namen standardmäßig hier(1) zu verwenden. Dies bedeutet, dass nichts im globalen Bereich landet, es sei denn, Sie weisen es ausdrücklich an, dorthin zu gelangen. Werfen wir also einen Blick darauf |
| bei diesem |
| Beispiel. Wir haben also lediglich diesen Namen standardmäßig hier(1) hinzugefügt. Es kann mit...im Allgemeinen an den Anfang Ihres Skripts gestellt werden, aber es kann wirklich überall hingehen. |
| Ich werde meine Symbole bereinigen und diese Variable x auf 5 setzen. Dann haben wir hier noch eine andere Schriftstelle |
| sagt, dass ich auf dein, dein x zugreifen möchte. Aber wirklich, dieses x kann niemals auf dieses x in diesem Namensraum zugreifen. Also |
| Kopieren wir einen Teil des Skripts und machen wir X gleich 50. |
| Und dann ist das X im rechten Skript 50, aber das hatte keine Auswirkung auf das X in unserem linken Skript. Das ist also eine großartige Möglichkeit, Ihre Symbole einfach von anderen Skripten und Anwendungen zu trennen. |
| Die andere Möglichkeit besteht darin, einen benutzerdefinierten Namespace zu verwenden. Dies ist etwas fortgeschrittener, kann aber sehr wirkungsvoll sein. Also hier bin ich wieder...klar mein |
| Symbole und dann das Erstellen eines neuen Namensraums, das Einrichten einer Variablen x innerhalb des Namensraums und das Anzeigen dieser. Es hat also einen Wert von fünf. |
| Und Sie haben hier draußen ein weiteres Drehbuch. Vielleicht ist dies eines Ihrer Skripte und das wissen Sie |
| myNS existiert. Sie können also versuchen, darauf zuzugreifen, und das können Sie ganz gut, weil Sie den Namen kennen. Aber es ist viel unwahrscheinlicher, dass jemand Ihr Symbol ohne Ihr Wissen ändert. Also |
| Ich kann dieses Symbol ändern und es wird immer noch 10 sein, aber wenn ich nur X mache, wird es keine wirklichen Auswirkungen auf das Ergebnis des X aus dem Namespace haben. |
| Ich werde es an Wendy zurückgeben, die uns von einigen übersehenen Ressourcen erzählen wird. |
| wendymurphrey | Danke, Justin. Es stehen Ihnen viele Ressourcen zur Verfügung, um mehr über JSL zu erfahren, und viele davon sind kostenlos. Hier haben wir für Sie einige der häufigsten Orte verlinkt, an denen Sie mehr über JSL suchen und erfahren können. |
| Wir bieten auch technischen Support an, den Sie erreichen können, und es gibt auch einige Bücher zu diesem Thema. Natürlich empfehlen wir Ihnen immer, einen Blick auf unsere Schulungsressourcen und die Pläne zu werfen, die sie für Sie bereithalten. |
| Werfen Sie unbedingt einen Blick auf das Papier zu dieser Präsentation über die JMP-Community, da wir dort noch ein paar weitere Fehler für Sie behandelt haben, für deren Diskussion wir heute keine Zeit hatten. Vielen Dank fürs Zuschauen. |