请帮助我检测以下代码中的错误

proc strcmp { d1 d2 } {
    set res [string compare $d1 $d2]

    switch $res
    0 {
    puts "String is equal "
    }
    1 {
    puts "$d1 > $d2"
    } default {
    puts "$d2 > $d1"
    }

}

当我尝试在tcl 8.5中执行时收到此错误消息

错误的#args:应该是“switch?switchs?字符串模式主体……?默认主体?”

最佳答案

您在另一行上有“0”。 Tcl将换行符视为命令终止符。您可能会看到类似“0:无此命令”的错误

使用任一行连续

switch $res  \
0 {
    puts "String is equal "
} \
1 {
    puts "$d1 > $d2"
} \
default {
    puts "$d2 > $d1"
}

或封闭支架(便于阅读)
switch $res  {
    0 {
        puts "String is equal "
    }
    1 {
        puts "$d1 > $d2"
    }
    default {
        puts "$d2 > $d1"
    }
}

文件:
  • http://tcl.tk/man/tcl8.6/TclCmd/Tcl.htm(规则1和9)
  • http://tcl.tk/man/tcl8.6/TclCmd/switch.htm
  • 关于switch-statement - Tcl开关盒错误,我需要对错误进行适当的解释,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27765748/

    10-16 19:25