【问题标题】:Is there a switch statement-type selection control mechanism in HyperTalk?HyperTalk中有switch语句式的选择控制机制吗?
【发布时间】:2021-07-17 23:19:19
【问题描述】:

在 1996 年的参考手册 HyperCard Script Language Guide: The HyperTalk Language 中,有一节关于嵌套的 if 结构,但似乎没有任何关于 switch 之类的语句。 HyperTalk 中是否有switch 语句类型的选择控制机制?如果没有,除了创建一个非常大的嵌套 if 结构之外,还有什么好的解决方法吗?

【问题讨论】:

    标签: hypercard hypertalk


    【解决方案1】:

    没有原生的 switch(或 case)语句语法。

    如果你想用一个整数来识别你选择的情况,你可以把所有可能的选择作为一个数组放入一个变量中,然后参考例如item [number] of [variable]

    【讨论】:

      【解决方案2】:

      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 值进行比较。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-01
        • 2016-10-13
        相关资源
        最近更新 更多