【发布时间】:2021-07-17 23:19:19
【问题描述】:
在 1996 年的参考手册 HyperCard Script Language Guide: The HyperTalk Language 中,有一节关于嵌套的 if 结构,但似乎没有任何关于 switch 之类的语句。 HyperTalk 中是否有switch 语句类型的选择控制机制?如果没有,除了创建一个非常大的嵌套 if 结构之外,还有什么好的解决方法吗?
【问题讨论】:
在 1996 年的参考手册 HyperCard Script Language Guide: The HyperTalk Language 中,有一节关于嵌套的 if 结构,但似乎没有任何关于 switch 之类的语句。 HyperTalk 中是否有switch 语句类型的选择控制机制?如果没有,除了创建一个非常大的嵌套 if 结构之外,还有什么好的解决方法吗?
【问题讨论】:
没有原生的 switch(或 case)语句语法。
如果你想用一个整数来识别你选择的情况,你可以把所有可能的选择作为一个数组放入一个变量中,然后参考例如item [number] of [variable]
【讨论】:
HyperCard 没有 switch/case 结构。如果你想做很多条件查询,你必须做嵌套 if/then/else 之类的
if marriedStatus = "Married" then
GetMarriedInfo
else if marriedStatus = "Single" then
GetSingleInfo
else
GetNeitherInfo
end if
(这是一个多行 if 语句链,其中单行 else 语句包含另一个多行 if)
不过,SuperCard 添加了一个 switch 语句(大多数 HyperCard 克隆都继承了该语句):
switch marriedStatus
case "Married"
GetMarriedInfo
exit switch
case "Single"
GetSingleInfo
exit switch
case true -- default case
GetNeitherInfo
exit switch
end switch
case 中可以有更复杂的表达式,基本上就是将切换后的值与 case 值进行比较。
【讨论】: