if { ($name1 == "john") & ($name2 == "smith") } { puts "hello world" }
i got error:can't use non-numeric string as operand of "&"
Run Code Online (Sandbox Code Playgroud)
我试过了:
if { $name1 == "john" & $name2 == "smith" } { puts "hello world" }
if { {$name1 == "john"} & {$name2 == "smith"} } { puts "hello world" }
Run Code Online (Sandbox Code Playgroud)
我想做什么?
exprTcl中的命令允许两种形式的AND操作:按位(使用运算符&)和逻辑(使用运算符&&).按位运算符仅允许整数操作数:逻辑运算符可以处理布尔值和数值(整数和浮点值; 0或0.0在这种情况下表示为假)操作数.除非您特别想使用位模式,否则请使用逻辑AND运算符.
一个表达式
$foo eq "abc" && $bar eq "def"
Run Code Online (Sandbox Code Playgroud)
因为eq运算符求值为布尔值(BTW:如果你正在进行字符串相等比较,则更喜欢新的eq(相等)运算符==,因为它更有效),留下&&两个布尔操作数.
但是,以下代码
{$foo eq "abc"} && {$bar eq "def"}
Run Code Online (Sandbox Code Playgroud)
失败,因为大括号阻止替换并强制&&处理两个字符串操作数.在这种情况下,&&操作员会给出错误消息
expected boolean value but got "$foo eq "abc""
Run Code Online (Sandbox Code Playgroud)
并且&操作员给出消息
can't use non-numeric string as operand of "&"
Run Code Online (Sandbox Code Playgroud)
这就是你得到的.
| 归档时间: |
|
| 查看次数: |
4012 次 |
| 最近记录: |