C++ 程序员 JSL 指南
问题
您了解一些 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 是一种特殊的对象(在脚本索引中得到特殊处理)。您可以从头开始构建自定义显示,并且可以使用从平台(如 Distribution)创建的显示。 许多平台在显示框树中都有输出,您可以通过下标访问这些输出。
- JSL 具有 LoadTextFile 和 SaveTextFile 函数,可将整个文件移入内存/返回磁盘。 一次没有读/写几个字节。
- JSL 有一个 include 函数,它读取 JSL 的一个文件并执行它。
- JSL 具有用户编写的函数,由“function”函数编译。
- JSL 的局部变量在编写大型项目时很有帮助。 默认情况下,变量是全局变量,这适用于小型项目和独一无二的测试,但第一次在嵌套循环中重用“i”时,可能需要查看局部变量。
回复:C++ 程序员 JSL 指南谢谢! 脚本索引是根据 getProperties 返回的相同信息构建的,并通过常见情况的示例进行了增强。 我也希望有更多的例子。 该语言还具有不是对象属性的特性,这些特性在本书中得到了更好的介绍。 JMP 在过去的 N 个版本中已经变得更好,可以在日志中生成更好的消息,有时还包括使用信息。
文档、技术支持和开发团队很乐意收到您对任何需要更多/更好/改进文档的评论。 通过技术支持将确保它得到跟踪。
@sheila_loring @shannon_conners @Wendy_Murphrey @XanGregg
回复:C++ 程序员 JSL 指南关于 Scirpting 索引的注释:它确实是一个非常强大的工具,具有集成的脚本窗口和可自定义的示例。
但是,我发现有点困难的是缺乏全面的语法索引。 JMP 中确实包含一本名为 JSL syntax reference 的 pdf 书籍,但它并不是 100% 全面的。 您不可能总能找到函数或消息的每个参数的语法。 您经常需要使用诸如 <
我在 JMP 愿望清单中对此有一个建议,希望它能得到一些荣誉。