JSL 的 C++ 程序員指南
問題
您了解一些 C++ 並了解 C++ 對像是什麼,並且需要 20 分鐘的 JMP 腳本語言介紹。
解決方案
- 幫助菜單上有一個 JMP 腳本索引。 它一起或分別描述函數、顯示框和對象。 當您深入挖掘時,請使用它提供的搜索。
- JSL 沒有類型變量;沒有辦法聲明一個 double、float、int 或 bool。 JSL 變量保存分配給它們的任何內容,通常是數字、矩陣或列表,但也可能是 DisplayBox、Expression、Function 或 Object。
- 用於測試和循環(for、while、if)的 C 語言控制結構與您可以在 C 中調用的函數非常不同。 for 語句是 C 編譯器可以理解的,而 print 語句是 C 運行時可以理解的。 JSL 不同:JSL for 語句實際上是一個函數,就像 JSL if 和 JSL while 語句一樣。 執行 JSL for 語句的函數名為“for”,它接受 4 個參數,以逗號分隔(正如您期望的函數那樣)。
for( icount = 1, icount <= 10, icount += 1, print( icount ); wait(1); );
- 它看起來類似於 C for 循環,但那些討厭的逗號/分號問題至少會讓你受益一次。 請注意,第 4 個參數是將執行 10 次的 JSL 表達式。 另請注意,循環從 1 開始並轉到 <= 10。 在 C 中,您幾乎肯定會從 0 開始並在 < 10...sae 迭代次數時停止,但從 0 開始。 JMP 更喜歡從 1 開始; JSL 中幾乎所有的索引都是基於 1 的(我忘記了 FORTRAN。) JSL if 語句是一個名為“if”的函數,它至少接受兩個參數:
if( a < b
, // comma
print("a is less than b"); x=9;
, // comma
c < d
, // comma
print("c is less than d"); x=10;
, // comma
print("a is not < b and c is not < d"); x=11;
);
- if 看起來很複雜,只是因為它顯示了函數接受的完整模式。 您可以在第二個參數之後的任何地方停止。 JSL while 語句也是一個函數(名為“while”),帶有兩個參數。
- 表達式是 JSL 發揮強大功能的地方。 表達式有點像 JSL,可能是 for 函數的第四個參數或 while 語句的第二個參數。 如果表達式在變量中,則可以將其傳遞給函數,或者對其求值,或者對其進行檢查和操作。 JSL 有一個名為“parse”的函數,可以將字符串值轉換為表達式。
- JSL 矩陣、列表和關聯數組是高級容器對象;通常,使用哪個或是否使用數據表將是一個有趣的設計選擇。 每個人都有針對不同工作的弱點和優勢。
- 數據表(或多個表)是您可以在 JSL 中使用的對象;您可以使用 forEachRow(expression) 語句(或函數...JSL 中的一切都是函數)處理單個表。 對於多個表,您需要使用 JSL 變量來引用不同的數據表對象並向它們發送消息。 JSL 消息通過 << 發送操作符發送到對象。
dt = open("$sample_data/big class.jmp");
dt << sort( by(height) );
- “排序”消息或方法只是數據表知道如何處理的眾多消息之一。 記住第 1 點中的腳本索引;它列出了所有消息,並且通常有一個示例。 數據表還處理對 Distribution 等開放平台的請求。 將 JSL 平台想像成大有用的子程序,您可以使用腳本語言將它們串在一起;您的目標應該是讓平台完成繁重的工作(因為它們是用 C++ 編寫的,所以它們非常快)並使用 JSL 腳本來編排您的演示文稿。 (不要在沒有充分理由的情況下用 JSL 編寫自己的分佈圖!)
- JSL 的演示文稿、圖形、表格和輸出是從通常顯示在窗口中的嵌套 DisplayBox 構建的。 DisplayBox 是一種特殊類型的對象(在腳本索引中得到特殊處理。)您可以從頭開始構建自定義顯示,並且可以使用從平台(如 Distribution)創建的顯示。 許多平台在顯示框樹中都有輸出,您可以通過下標訪問。
- JSL 具有 LoadTextFile 和 SaveTextFile 函數,可將整個文件移入內存/移回磁盤。 一次沒有讀/寫幾個字節。
- JSL 有一個包含函數,它讀取 JSL 文件並執行它。
- JSL 有用戶編寫的函數,由“function”函數編譯。
- JSL 的局部變量在編寫大型項目時很有幫助。 默認情況下,變量是全局變量,這適用於小型項目和同類測試,但是當您第一次在嵌套循環中重用“i”時,可能是時候查看局部變量了。
回复:JSL 的 C++ 程序員指南謝謝! 腳本索引是根據 getProperties 返回的相同信息構建的,並通過常見案例的示例進行了增強。 我也希望有更多的例子。 該語言還具有不是對象屬性的特性,這些特性在書中得到了更好的介紹。 JMP 在過去 N 個版本中在日誌中生成更好的消息方面做得更好,有時還包括使用信息。
文檔、技術支持和開發團隊很樂意聽取您對任何需要更多/更好/改進文檔的意見。 通過技術支持將確保它被跟踪。
@sheila_loring @shannon_conners @Wendy_Murphrey @XanGregg
回复:JSL 的 C++ 程序員指南關於 Scirpting 索引的說明:它確實是一個非常強大的工具,具有集成的腳本窗口和可定制的示例。
但是,我發現有點困難的是缺乏一個全面的語法索引。 JMP 中確實包含一本名為 JSL 語法參考的 pdf 書,但它並不是 100% 全面的。 您不能總是找到函數或消息的每個參數的語法。 您經常需要使用諸如 <
我在 JMP 願望清單中有一個建議,希望它得到一些讚譽。