2

我想知道动态类型语言在找到匹配的大小写标签时会如何表现。它会继续评估尚未比较的其他标签值吗?(查找重复的案例标签或类型错误)。

常见的动态类型语言在那里表现如何?

4

2 回答 2

1

我在这里只能说 JavaScript,但是 JavaScript 会通过首先检查两个操作数是否属于同一类型来搜索匹配的标签,然后再检查值。如果找到匹配项,switch case 将执行与标签关联的语句并跳出 switch 语句(如果找到 break 语句)。

例子:

notANumber='0'

switch (notANumber) {
  case 0:
    alert("It's a number, Jim.");
    break;
  case '0':
    alert("It's a string, Jim.");
    break;
}

这将导致显示一个弹出语句It's a string, Jim.。它实际上与 C 开关并没有太大区别(可悲的是 ;-))。

编辑

运算符在===这里用于比较,它不仅测试值,还测试类型。如果==改为使用运算符,则将仅测试操作数的值(这将导致第一种情况为真)。

于 2012-06-25T08:43:22.797 回答
1

有两种众所周知的切换方法,尽管大小写标签通常是文字,但与动态无关。

发生什么取决于跌倒。

隐式失败将按照代码中的案例顺序执行所有匹配的案例。

显式失败将执行第一个匹配的 case 而不会执行其他匹配,除非您显式跳转到另一个 case 标签,该标签可以位于 switch 的任何位置。

于 2012-06-25T08:51:56.447 回答