如何阻止AppleScript比较字符串与数字且不使用try/on error语句?
可以通过预先校验值的类型实现,完全不需要try/on error语句。
AppleScript 支持使用 class of 指令直接获取变量的类型,你可以在执行比较前先判定两个待比较值的类型是否均为number,仅类型匹配时再执行比较逻辑。
基础实现示例
set val1 to 10 ^ 308 set val2 to "a" -- 仅当两个值均为数字时执行比较 if class of val1 is number and class of val2 is number then set compareResult to val1 > val2 -- 后续处理比较结果的逻辑 else -- 自定义类型不匹配时的处理逻辑,比如返回指定值、打印提示等 set compareResult to missing value end if
可复用的封装方案
如果需要频繁调用数字比较逻辑,可以封装为专属 handler,同时还可通过 considering numeric strings 配置是否兼容格式为数字的字符串(如 "123"):
on compareNumbers(a, b, op) -- 严格校验类型 if class of a is not number or class of b is not number then return missing value -- 类型不匹配时返回空值,可自定义返回规则 end if -- 可选:开启后可兼容数字格式的字符串比较,不需要可删除本段 considering numeric strings if op is ">" then return a > b if op is "<" then return a < b if op is "=" then return a = b if op is ">=" then return a >= b if op is "<=" then return a <= b end considering return missing value end compareNumbers -- 调用示例 log compareNumbers(5, 10, "<") -- 输出 true log compareNumbers("a", 100, ">") -- 输出 missing value
内容的提问来源于stack exchange,提问作者gurkensaas
相关产品推荐
相关产品推荐

