如何在AppleScript键值列表中使用计算变量,实现循环生成递增键?
AppleScript动态生成递增键记录问题解析
错误原因
你要创建的{key1:"foo1"}是AppleScript的**记录(Record)**类型,而非数组/列表。记录的键是编译时确定的标识符,不能直接用字符串变量替代。当你写{k:myValue}时,AppleScript会将变量名k直接作为键名,不会解析它的字符串值"key1",这就是结果不符合预期的核心原因。
解决办法
AppleScript不支持直接用变量定义记录键名,需通过run script动态生成并执行代码字符串来实现:
set finalRecord to {} repeat with i from 1 to 3 set keyStr to "key" & i set valueStr to "foo" & i -- 动态构建创建单个键值对的脚本 set pairScript to "{" & keyStr & ":" & quoted form of valueStr & "}" -- 执行脚本得到键值对并合并到最终记录 set finalRecord to finalRecord & run script pairScript end repeat return finalRecord -- 输出:{key1:"foo1", key2:"foo2", key3:"foo3"}
说明
quoted form of用于将字符串值转义为AppleScript可识别的格式,避免特殊字符导致脚本执行错误。- 通过
run script动态生成的代码会被编译执行,从而实现用变量值作为记录键名的效果。
内容的提问来源于stack exchange,提问作者hawk
相关产品推荐
相关产品推荐

