882 lines
24 KiB
Markdown
882 lines
24 KiB
Markdown
# TSL Agent Prompt Set (ZH)
|
||
|
||
本文件只包含发送给被测 agent 的题面。
|
||
|
||
## Runner Setup
|
||
|
||
```text
|
||
You are in this repository. The documentation entry point is docs/index.md.
|
||
When asked to write TSL, start from docs/index.md and follow its routing to the
|
||
relevant TSL pages. Do not infer syntax from Pascal, TypeScript, JavaScript,
|
||
Python, or SQL.
|
||
```
|
||
|
||
## Answer Rules
|
||
|
||
```text
|
||
每个 case 独立作答。
|
||
除非题面明确要求输出 .tsf,否则默认输出可执行 .tsl 文件内容。
|
||
题面模拟普通用户的需求,不要复制文档中的样例代码。
|
||
请按题面里的名称、数据和业务动作重新编写。
|
||
如果输出 .tsl,请在题面要求的业务输出全部完成后,用 TSL 输出语句最后输出一行 __TSL__AGENT__OK__。
|
||
如果输出 .tsf,必须是 TSL 能从 funcext 加载的有效函数扩展或 unit 文件;
|
||
不要在 .tsf 中加入成功标记,成功标记由验证脚本输出。
|
||
只输出代码,不要解释。
|
||
```
|
||
|
||
## Prompts
|
||
|
||
### TSL-001: 订单折后金额
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
一个订单里,单价是 19,数量是 6,优惠金额是 14。
|
||
请算出这行订单最后要收多少钱,并输出结果。
|
||
```
|
||
|
||
### TSL-002: 分页信息
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
一共有 47 条记录,每页放 10 条。
|
||
请输出能装满的页数,以及最后一页还剩多少条。
|
||
```
|
||
|
||
### TSL-003: 订单编号
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
把文字 "Order" 和编号 "42" 合成一个订单编号,然后输出它。
|
||
```
|
||
|
||
### TSL-004: 简单扣费
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
账户余额是 12,本次扣费是 3。
|
||
请输出扣费后的余额。不要提前列出额外的变量清单。
|
||
```
|
||
|
||
### TSL-005: 固定单价
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
某个商品固定单价是 9,本次买了 4 个。
|
||
请把固定单价作为常量保存,再输出总价。
|
||
```
|
||
|
||
### TSL-006: 严格模式库存
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
这份脚本要开启显式变量模式。
|
||
请准备一个库存数 stock,把它设为 18,然后输出它。
|
||
```
|
||
|
||
### TSL-007: 读取分数
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
有一组分数:15、30、45。
|
||
请输出第一项和最后一项。
|
||
```
|
||
|
||
### TSL-008: 读取编码字符
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
编码是 "ZX9"。
|
||
请输出第一个字符和第三个字符。
|
||
```
|
||
|
||
### TSL-009: 空列表检查
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
准备一个空列表 bucket。
|
||
请检查 bucket 的第一个位置是不是 nil,并输出检查结果。
|
||
```
|
||
|
||
### TSL-010: 文本数字参与计算
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
有一个文本形式的数字 "58"。
|
||
请先把它变成整数,再减去 8,并输出结果。
|
||
```
|
||
|
||
### TSL-011: 温度标签
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
temperature 是 32。
|
||
如果温度大于等于 30,level 就是 "hot";否则 level 是 "normal"。
|
||
请最后输出 level。
|
||
```
|
||
|
||
### TSL-012: 余额审核
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
balance 是 80。
|
||
如果 balance 大于 50,请先输出 "allow",再扣掉 10;
|
||
否则输出 "deny"。最后输出 balance。
|
||
```
|
||
|
||
### TSL-013: 偶数累加
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请把 2、4、6、8 加起来并输出。
|
||
要求用带步长的循环完成。
|
||
```
|
||
|
||
### TSL-014: 权重检查
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
weights 里有 3、5、9。
|
||
请逐个处理,每行输出“当前位置”和“这个位置的值”的乘积。
|
||
```
|
||
|
||
### TSL-015: 累加到上限
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
从 n = 1 开始累加。
|
||
当 n 大于 4 时停止,最后输出累计结果。
|
||
```
|
||
|
||
### TSL-016: 跳过指定数字
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
处理 1 到 5。
|
||
遇到 3 时跳过它,只累加其他数字,最后输出结果。
|
||
```
|
||
|
||
### TSL-017: 倒计时
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
从 countdown = 4 开始倒数,一直到 0 停止。
|
||
请使用 repeat until,并输出最后的 countdown。
|
||
```
|
||
|
||
### TSL-018: 状态码
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
status_code 是 2。
|
||
如果是 1,输出 "new";如果是 2 或 3,输出 "active";
|
||
其他情况输出 "closed"。
|
||
```
|
||
|
||
### TSL-019: 等级文字
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
grade 是 3。
|
||
请用 case 表达式得到一段等级文字:1 是 "low",2 到 4 是 "mid",其他是 "high"。
|
||
最后输出这段等级文字。
|
||
```
|
||
|
||
### TSL-020: 捕获错误信息
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
故意抛出 "network" 这个错误。
|
||
捕获它后,请输出错误对象里的错误信息。
|
||
```
|
||
|
||
### TSL-021: 清理动作
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
先输出 "open"。
|
||
无论前面是否正常结束,最后都要输出 "close"。
|
||
请用 try/finally 完成。
|
||
```
|
||
|
||
### TSL-022: 计算数量乘积
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请做一个“计算两个整数乘积”的功能,名字由你自己取。
|
||
脚本里请用 6 和 8 调用它,并输出结果。
|
||
```
|
||
|
||
### TSL-023: 调整额度
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请做一个“把额度增加 5”的动作,名字由你自己取。
|
||
脚本里 quota 一开始是 10,调用后输出 quota。
|
||
```
|
||
|
||
### TSL-024: 默认手续费
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请做一个“计算手续费后金额”的功能,名字由你自己取。
|
||
如果没有传金额,就按 100 处理;最后结果是金额加 6。
|
||
请分别输出不传金额和传 20 时的结果。
|
||
```
|
||
|
||
### TSL-025: 下一批编号
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请做一个“取得下一批编号”的功能,名字由你自己取。
|
||
起始编号是整数,默认是 10,结果也是整数。
|
||
它要返回起始编号加 1。请输出默认情况下的结果。
|
||
```
|
||
|
||
### TSL-026: 区间组装
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请做一个“组装左右边界”的功能,名字由你自己取,把两个边界值组成一个两项列表。
|
||
调用时请用命名方式传入:right 是 90,left 是 40。
|
||
最后输出这两项。
|
||
```
|
||
|
||
### TSL-027: 跳过中间值
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请做一个“检查中间位置”的功能,名字由你自己取,里面要输出第二个位置 b 是不是 nil。
|
||
调用时只给第一个和第三个位置传值,故意跳过 b。
|
||
```
|
||
|
||
### TSL-028: 按名字调用功能
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请做一个“三位数字编码”的功能,名字由你自己取。
|
||
它把三个输入算成 a * 100 + b * 10 + c。
|
||
脚本里请通过 call 按这个名字调用它,并输出结果。
|
||
```
|
||
|
||
### TSL-029: 多个数字相乘
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请做一个“多个数字相乘”的功能,名字由你自己取。
|
||
它可以接收任意多个数字,并把它们全部相乘。
|
||
请用 2、3、4 调用,并输出结果。
|
||
```
|
||
|
||
### TSL-030: 看到多少输入
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请做一个“统计收到多少输入”的功能,名字由你自己取。
|
||
前两个位置是固定的,后面还能继续接收更多值。
|
||
它要输出 ParamCount * 100 + RealParamCount 的结果。
|
||
请用 5、6、7 调用。
|
||
```
|
||
|
||
### TSL-031: 保存一个小计算
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
把一个“小计算”保存到你自己命名的变量里。这个小计算接收两个值,结果是两者相乘。
|
||
请通过 call 调用这个变量,并用 4 和 9 输出结果。
|
||
```
|
||
|
||
### TSL-032: 把计算交给别人执行
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请做一个“执行后再翻倍”的功能,名字由你自己取,它接收另一个计算。
|
||
这个功能要先用 3 调用收到的计算,再把得到的结果乘以 2。
|
||
调用它时,直接给它一个“把输入加 5”的匿名计算,并输出结果。
|
||
```
|
||
|
||
### TSL-033: 查找已有功能
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请做一个“把输入乘以 3”的功能,名字由你自己取。
|
||
脚本里找到这个名字对应的函数值,再用支持的函数值调用方式处理 7,并输出结果。
|
||
```
|
||
|
||
### TSL-034: 传递当前功能
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请做一个“把输入平方”的功能,名字由你自己取。
|
||
再做一个“调用传入计算”的功能,名字也由你自己取,它接收一个计算和一个值,并通过 call 执行。
|
||
脚本里取得平方功能的函数值,并输出调用结果。
|
||
```
|
||
|
||
### TSL-035: 函数里使用规则包
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请做一个“读取远程费率”的功能,名字由你自己取。
|
||
这个功能一进入函数体就要使用一个费率相关的 unit,然后返回该 unit 中读取费率动作的结果。
|
||
```
|
||
|
||
### TSL-036: 脚本开头使用规则包
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
脚本需要先使用两个你自己命名的规则包:一个处理价格,一个处理税费。
|
||
之后调用一个“计算最终金额”的动作,并输出结果。
|
||
```
|
||
|
||
### TSL-037: 手续费扩展
|
||
|
||
```text
|
||
请写一份 .tsf 代码:
|
||
提供一个“计算服务费”的功能,名字由你自己取,接收金额。
|
||
金额大于 1000 时,费用是 amount div 20;否则费用是 30。
|
||
不要写可直接运行的脚本入口。
|
||
```
|
||
|
||
### TSL-038: 发票规则包
|
||
|
||
```text
|
||
请写一份 .tsf 代码:
|
||
请做一个“发票规则”unit,unit 名由你自己取。
|
||
外部只需要能调用一个“默认额度”功能,并得到 500。
|
||
请写成完整的 unit 文件。
|
||
```
|
||
|
||
### TSL-039: 运费规则包
|
||
|
||
```text
|
||
请写一份 .tsf 代码:
|
||
请做一个“运费规则”unit,unit 名由你自己取。
|
||
外部只能调用一个“计算可计费重量”的功能。
|
||
内部可以有一个不对外公开的小工具,用来把负数修正为 0。
|
||
可计费重量要返回修正后的毛重减去皮重。
|
||
```
|
||
|
||
### TSL-040: 会员积分规则包
|
||
|
||
```text
|
||
请写一份 .tsf 代码:
|
||
请做一个“会员积分规则”unit,unit 名由你自己取。
|
||
外部可以调用“基础分”和“最终积分”两个功能。
|
||
level 大于等于 3 时基础分是 20,否则是 5。
|
||
最终积分的结果是金额 div 10 加上基础分。
|
||
```
|
||
|
||
### TSL-041: 商品信息表
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
准备一条商品信息,里面有 sku = "B17",qty = 12。
|
||
请输出 sku 和 qty。
|
||
```
|
||
|
||
### TSL-042: 只取第一个成绩
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
有一组成绩 88、99、100。
|
||
请只取第一个值放到 first_mark,然后输出 first_mark。
|
||
```
|
||
|
||
### TSL-043: 读取两行数据
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
有两行数据:(8, 1) 和 (9, 2)。
|
||
请把两行分别取出来,再输出每行的两个值。
|
||
```
|
||
|
||
### TSL-044: 检查是否存在
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
先检查 5 是否在 2、5、8 这一组数字里,并输出结果。
|
||
再检查整行 (2, 5) 是否在两行数据 (1, 1)、(2, 5) 里面,并输出结果。
|
||
```
|
||
|
||
### TSL-045: 两组行数据对比
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
left_rows 是 (1, "a")、(2, "b")。
|
||
right_rows 是 (2, "b")、(3, "c")。
|
||
请分别算出合并、交集、左边独有、两边不重叠的结果,并输出每个结果的大小。
|
||
```
|
||
|
||
### TSL-046: 只保留允许状态
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
有一批订单,每行包含订单号和状态。
|
||
再准备一份允许状态列表。
|
||
请只保留状态命中的订单,并输出保留下来的行数。
|
||
```
|
||
|
||
### TSL-047: 排除禁止状态
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
有一批任务,每行包含任务号和状态。
|
||
再准备一份禁止状态列表。
|
||
请排除命中的任务,并输出剩余行数。
|
||
```
|
||
|
||
### TSL-048: 查询商品数量
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
有一批商品数据,每行包含商品编号和数量。
|
||
请用 TS-SQL 只取数量大于 3 的行,并输出结果行数。
|
||
```
|
||
|
||
### TSL-049: 筛选并排序成绩
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
有一批姓名和分数。
|
||
请用 TS-SQL 只保留分数大于等于 60 的人,并按分数从高到低排序。
|
||
最后输出第一行的姓名。
|
||
```
|
||
|
||
### TSL-050: 部门金额汇总
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
有一批部门和金额数据。
|
||
请用 TS-SQL 按部门汇总金额,并输出汇总后的行数。
|
||
```
|
||
|
||
### TSL-051: 客户订单关联
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
有一组客户数据和一组订单数据,它们通过客户编号关联。
|
||
请用 TS-SQL 得到客户名称和订单金额,并输出关联后的行数。
|
||
```
|
||
|
||
### TSL-052: 多种数字写法
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
有几个配置值:0x2A、0b1010、0o12、200L、6E2。
|
||
请分别输出它们对应的类型判断结果。
|
||
```
|
||
|
||
### TSL-053: 日期和时间
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
有一个日期 20240618T,还有一个带时间的值 20240618.1530T。
|
||
请分别输出日期字符串和时间字符串。
|
||
```
|
||
|
||
### TSL-054: 数字真假判断
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
先输出 true 和 false。
|
||
再分别判断 4、0、-2 在 if 里会走哪个分支,并输出分支标记。
|
||
```
|
||
|
||
### TSL-055: Nil 参与计算
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请输出 ifNil(nil) 的结果。
|
||
再输出 nil + 5、5 + nil,并检查 nil + nil 是不是 nil。
|
||
```
|
||
|
||
### TSL-056: 复数信息
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
准备两个复数:8 + 6j 和 complex(3, -4)。
|
||
请输出第一个复数的实部、虚部,并输出第二个值是不是复数。
|
||
```
|
||
|
||
### TSL-057: 批次报告
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
一批货有 17 件,每箱装 5 件;优先级是 3;距离是 9,基准是 4;ratio_base 是 7。
|
||
请输出完整箱数、剩余件数、优先级的四次方、距离与基准的按位关系结果,
|
||
以及 ratio_base 与 3 的左除计算结果。
|
||
```
|
||
|
||
### TSL-058: 补货数量
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
最低库存是 20,当前库存是 14。
|
||
如果库存不足,reorder_count 就是最低库存减当前库存;否则是 0。
|
||
请用条件表达式得到 reorder_count,并输出它。
|
||
```
|
||
|
||
### TSL-059: 候补分数
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
primary_score 是 12,missing_score 是 0,候补值是 99。
|
||
请用省略真值的条件表达式分别得到两个最终分数,并输出。
|
||
```
|
||
|
||
### TSL-060: 发货判断
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
paid 是 true,blocked 是 false,amount 是 120。
|
||
请用 and、or、not 判断是否允许发货,并输出结果。
|
||
```
|
||
|
||
### TSL-061: 权限掩码
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
read_write 是 6,audit_exec 是 3。
|
||
请输出共同权限、合并权限、差异权限,以及 read_write 取反后的结果。
|
||
```
|
||
|
||
### TSL-062: 计数调整
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
counter 一开始是 5。
|
||
先加 4,再自增一次,最后输出 counter。
|
||
```
|
||
|
||
### TSL-063: 安全读取订单金额
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
maybe_order 是 nil。
|
||
请安全读取 maybe_order.total,并输出读取结果是不是 nil。
|
||
```
|
||
|
||
### TSL-064: 阈值范围
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请判断 3、8、20 是否满足从小到大的连续比较,并输出结果。
|
||
```
|
||
|
||
### TSL-065: 三组指标逐项比较
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
有三组指标:2、4、6;3、5、7;4、6、8。
|
||
请逐项判断第一组是否小于第二组、第二组是否小于第三组,
|
||
并输出得到的三个结果。
|
||
```
|
||
|
||
### TSL-066: 发票号格式
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
发票号是 "INV-2024-07"。
|
||
请判断它是不是以 "INV-" 开头,并且后面包含数字,然后输出结果。
|
||
```
|
||
|
||
### TSL-067: 带注释的小脚本
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请包含两种 TSL 支持的注释写法。
|
||
然后把 daily_total 设为 31,并输出它。
|
||
```
|
||
|
||
### TSL-068: 编译时模式选择
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
如果定义了 FAST_MODE,就输出 "fast";否则输出 "safe"。
|
||
请用条件编译完成。
|
||
```
|
||
|
||
### TSL-069: 临时上下文
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请使用运行时 with 单星块。
|
||
在临时上下文里设置一个字段,并在块内输出这个字段。
|
||
```
|
||
|
||
### TSL-070: 嵌套上下文
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请使用运行时 with 双星块。
|
||
在嵌套上下文里读取外层字段,并输出组合结果。
|
||
```
|
||
|
||
### TSL-071: 带超时的远程式调用
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
准备一个“慢速评分”的功能,名字由你自己取,它返回 12。
|
||
请用网格调用方式调用它,并设置超时时间,然后输出得到的结果。
|
||
```
|
||
|
||
### TSL-072: 全局缓存
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
把 "session_limit" 这个全局缓存设为 300。
|
||
再读取它并输出,同时输出这个缓存是否存在。
|
||
```
|
||
|
||
### TSL-073: 调试结果
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请做一个“检查金额”的功能,名字由你自己取。
|
||
如果输入小于 0,请用 debugReturn 返回调试值;否则返回原值。
|
||
请用 -1 调用它并输出结果。
|
||
```
|
||
|
||
### TSL-074: 简单计时
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请用内置计时开始和结束功能包住一个小循环,并输出计时结果。
|
||
```
|
||
|
||
### TSL-075: 兜底跳转
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
flag 是 false。
|
||
如果 flag 为 false,就跳到 fallback 标签。
|
||
fallback 里输出 "fallback"。
|
||
```
|
||
|
||
### TSL-076: 账户卡片
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
我需要一种“账户卡片”对象,类型名由你自己取。
|
||
它要有一个公开字段,用来保存持有人姓名,字段名也由你自己取。
|
||
脚本里创建一张卡,把持有人设为 "Lina",然后输出这个字段。
|
||
```
|
||
|
||
### TSL-077: 仪表盒
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
我需要一种“仪表盒”对象,类型名由你自己取。
|
||
创建它时传入初始读数,保存到 reading。
|
||
它有一个“前进一步”的动作,动作名由你自己取,每次让读数增加 2,并给出新的读数。
|
||
脚本里创建一个初始读数为 10 的对象,输出调用这个动作后的结果。
|
||
```
|
||
|
||
### TSL-078: 设备总数
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
我需要一种“设备计数器”类型,类型名由你自己取,它有一个所有对象共享的 total_count。
|
||
脚本里把 total_count 设为 77,然后输出它。
|
||
```
|
||
|
||
### TSL-079: 汇率工具
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
我需要一种“汇率计算”类型,类型名由你自己取,上面直接提供一个“倍率相乘”的功能。
|
||
它返回 a * b。
|
||
脚本里通过类型本身调用这个功能处理 4 和 5,并输出结果。
|
||
```
|
||
|
||
### TSL-080: 货架编码
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
我需要一种“货架盒”对象,类型名由你自己取。
|
||
它内部有一个保存货架编码的字段,字段名由你自己取。
|
||
对外通过一个属性读写这个编码,属性名也由你自己取。
|
||
脚本里创建对象,把编码设为 "S-8",然后通过属性输出编码。
|
||
```
|
||
|
||
### TSL-081: 客户显示名
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
我需要一种“客户名称”对象,类型名由你自己取。
|
||
它内部有一个 string 类型字段,用来保存原始姓名,字段名由你自己取。
|
||
对外通过一个带类型的属性访问显示姓名,属性名也由你自己取。
|
||
脚本里设置并输出这个显示姓名属性。
|
||
```
|
||
|
||
### TSL-082: 两种渲染方式
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
我需要一种“格式化工具”对象,类型名由你自己取。
|
||
它有两个同名动作,动作名由你自己取:一个接收一个值,一个接收两个值。
|
||
脚本里分别调用这两种动作,并输出结果。
|
||
```
|
||
|
||
### TSL-083: 自行车对象
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
我需要一种“交通工具基础对象”,类型名由你自己取。
|
||
它有一个说明类别的动作,动作名由你自己取,结果是 "vehicle"。
|
||
再做一种“自行车对象”,类型名也由你自己取,继承前面的基础对象,
|
||
并增加一个说明轮子数量的动作,动作名由你自己取,结果是 2。
|
||
脚本里创建自行车对象,输出类别和轮子数量。
|
||
```
|
||
|
||
### TSL-084: 折扣价格标签
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
我需要一种“价格基础对象”,类型名由你自己取。
|
||
它有一个可被子类型改写的标签动作,动作名由你自己取,默认结果是 "base"。
|
||
再做一种“折扣价格对象”,类型名也由你自己取,把这个标签动作的结果改成 "discount"。
|
||
脚本里创建折扣价格对象并输出标签。
|
||
```
|
||
|
||
### TSL-085: 追加消息
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
我需要一种“基础消息对象”,类型名由你自己取。
|
||
它有一个给出文字的动作,动作名由你自己取,结果是 "base"。
|
||
再做一种“提醒消息对象”,类型名也由你自己取。
|
||
它的文字动作要先调用父级同名动作,再追加 "-alert"。
|
||
脚本里输出提醒消息对象的文字。
|
||
```
|
||
|
||
### TSL-086: 类外补充方法
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
我需要一种“票据打印器”,类型名由你自己取。
|
||
类型里面只先写出一个“打印编号”动作的名字,动作名由你自己取。
|
||
请在类型外面补上这个动作的内容,让它给出 "T-100"。
|
||
脚本里创建对象并输出结果。
|
||
```
|
||
|
||
### TSL-087: 按名称创建对象
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
我需要一种“动态盒子”对象,类型名由你自己取。
|
||
它有一个给出数值的动作,动作名由你自己取,结果是 64。
|
||
脚本里请通过字符串里的类型名创建这个对象,并输出这个数值。
|
||
```
|
||
|
||
### TSL-088: 临时句柄清理
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
我需要一种“临时句柄”对象,类型名由你自己取。
|
||
它被销毁时要输出 "released"。
|
||
脚本里创建它,然后把引用设为 nil。
|
||
```
|
||
|
||
### TSL-089: 外部评分函数
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
有一个外部提供的“评分”功能,TSL 中使用的名字由你自己取,它接收一个值并给出结果。
|
||
这里只需要写出它和外部功能的连接写法,不需要调用。
|
||
```
|
||
|
||
### TSL-090: 外部日志动作
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
有一个外部提供的“写日志”动作,TSL 中使用的名字由你自己取,它接收一段文本。
|
||
这里只需要写出它和外部动作的连接写法,不需要调用。
|
||
```
|
||
|
||
### TSL-091: 包装原生函数指针
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
假设 native_ptr 已经保存了一个原生函数指针。
|
||
请按 TSL 支持的方式把它包装成可调用对象,并演示传入两个数字调用。
|
||
```
|
||
|
||
### TSL-092: 后台任务
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
准备一个后台任务,名字由你自己取,里面输出 "work"。
|
||
请用线程相关写法启动它,并保持代码尽量小。
|
||
```
|
||
|
||
### TSL-093: FMArray 尺寸
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
创建一个 2 行 3 列的 FMArray。
|
||
请输出它是不是 FMArray,并输出行数、列数和总尺寸。
|
||
```
|
||
|
||
### TSL-094: 矩阵大小
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
准备一个两行三列的数字矩阵。
|
||
请输出它的行数、列数和总尺寸。
|
||
```
|
||
|
||
### TSL-095: 金额对象相加
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
我需要一种“金额盒子”对象,类型名由你自己取,里面有 value。
|
||
请让两个这种对象可以直接相加,相加后得到新的同类对象。
|
||
脚本里创建两个对象,并输出相加后的 value。
|
||
```
|
||
|
||
### TSL-096: 区分局部和全局功能
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
写一个局部功能,名字故意和某个系统功能一样。
|
||
脚本里请分别调用局部功能和全局/系统功能,并输出两次结果。
|
||
```
|
||
|
||
### TSL-097: 关闭默认写回
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
关闭默认的输入写回行为。
|
||
请做一个“双值触碰”动作,名字由你自己取:普通输入不要写回,明确标记为 var 的输入要写回。
|
||
脚本调用后输出两个变量,证明只有 var 那个改变了。
|
||
```
|
||
|
||
### TSL-098: In 和 Out
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
关闭默认的输入写回行为。
|
||
请做一个“同步几个值”的动作,名字由你自己取,接收三个值,并只让 out 标记的值写回。
|
||
脚本调用时使用 in 和 out 前缀,然后输出三个变量。
|
||
```
|
||
|
||
### TSL-099: 提前退出
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
请做一个“保护性计算”的功能,名字由你自己取。
|
||
如果输入小于 0,就直接退出;否则给出输入乘以 2 的结果。
|
||
脚本里分别用 -1 和 6 调用它,并输出两次结果。
|
||
```
|
||
|
||
### TSL-100: 订单汇总
|
||
|
||
```text
|
||
请写一份 .tsl 代码:
|
||
有一批订单行,每行包含商品名、数量、单价。
|
||
请做一个“计算单行金额”的功能,名字由你自己取。
|
||
遍历所有订单行,数量为 0 的行跳过,其他行累计金额。
|
||
如果总金额大于 100,输出 "bulk",否则输出 "normal"。
|
||
最后输出总金额。
|
||
```
|