DAS 脚本变量、表达式与命令
逐句读懂赋值、计算、函数与传统命令。
同一行里可能是三种操作
$fePrice = 12.5; 给用户变量赋值;Price=12.5; 写入对应上下文里的 Montage 字段;MsgBox($fePrice); 调用函数。看起来相似的文字,副作用可能完全不同。
语句用分号分隔,字符串使用 ASCII 直引号,注释用 //。从 PDF 复制时,排版引号可能混入代码,造成解析错误。
先做一个能手算核对的计算
Advanced Script · 仅计算和弹窗。 数字都是教学假设值。
$feUnits = 24;
$feUnitPrice = 7.5;
$feNotional = $feUnits * $feUnitPrice;
MsgBox($feNotional);
预期结果是 180。只把 $feUnits 改成 32,结果应为 240。这样先验证算术,不混入行情和订单输入。
| 写法 | 含义 | 检查重点 |
|---|---|---|
$feUnits = 24 |
赋一个整数值 | 新值覆盖旧值 |
$feUnitPrice = 7.5 |
赋一个小数值 | 区分美元和美分 |
"feMontage" |
字符串字面值 | 名称需要引号 |
$feWindow.BID |
读取对象属性 | 先取得对象 |
MsgBox(...) |
显示数值 | 弹窗需要人工交互 |
手册列出了整数、浮点数、字符串、对象四类值,并说明乘除优先于加减。只要分组影响含义,就把括号写出来。
动手练习:分清变量与字段
指出开头三种写法里,哪一种会修改 Montage。再先手算 (24 + 8) * 7.5,然后写成表达式。把平台命令和纯计算分开组织,便于逐块审查副作用。
按求值过程读代码
对 $feNotional = $feUnits * $feUnitPrice;,先读取右侧两个当前值,再相乘,最后覆盖左侧。赋值不是永久建立公式依赖:之后改 $feUnits,不会自动重算已经存下的 $feNotional。如果需要新结果,必须再次执行计算。
Advanced Script · 固定数值、消息,无窗口写入。
$feUnits = 24;
$feUnitPrice = 7.5;
$feNotional = $feUnits * $feUnitPrice;
$feUnits = 32;
MsgBox("Stored: ", $feNotional);
$feNotional = $feUnits * $feUnitPrice;
MsgBox("Recomputed: ", $feNotional);
预期先显示 180,再显示 240。这也是“保存行情快照”和“重新读取行情”的区别:一个旧数字不会自己跟着行情更新。
字符串、数字和对象的边界
"24" 是文本字面量,24 是整数;不要依赖未经验证的隐式转换。窗口对象也不是窗口名称字符串:"feMontage" 是查找参数,GetWindowObj("feMontage") 才执行查找。ShowObject() 的展示行为不意味着它返回原对象。
布尔判断、数值取整和字符串输入都有自己的语义。先使用官方已展示的运算符;不要因为 DAS 有大括号,就粘贴 JavaScript 的数组、箭头函数、try/catch、=== 或 Math.floor。稍后使用 输入与验证、数值模型 和 NewUserObj 学习 DAS 自己的写法。
练习解答
开头三个例子中,只有 Price=12.5; 写入 Montage 字段。(24 + 8) * 7.5 等于 240;去掉括号变成 24 + 8 * 7.5,结果是 84。练习时先写预期,再运行,不能只看“没有报错”。