微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Tcl lindex 和 expr:非数字失败

如何解决Tcl lindex 和 expr:非数字失败

如果我只把它放在下面就行了。

"\{[lindex ($columns) 1] - 30.3]"

如果我把它放在下面,它不起作用。不知道为什么?

"\{[lindex ($columns) 1] - 30.3] [expr [lindex ($columns) 2] -30.3] \}"

我的脚本如下:

foreach line $lines {
    set columns [split $line " "]
    puts "\{[lindex ($columns) 1] - 30.3] [expr [lindex ($columns) 2] -30.3] \}"
}

解决方法

问题在于您正在编写 ($columns) 而不是 $columns,后者将您传递给 lindex 的列表上的括号连接起来。在这种情况下,我怀疑该列表具有三个简单元素(例如,1 2 3)并且连接的结果是 (1 2 3)。索引 1 处的中间元素仍然没问题,但末尾的元素(索引 2)现在是 3) 并且是非数字的。

整件事就是一个语法错误。以下是正确编写它的方法:

puts "\{[expr {[lindex $columns 1] - 30.3}] [expr {[lindex $columns 2] -30.3}] \}"

然而,在这种情况下,写这个可能会更清楚一些:

lassign [split $line " "] c1 c2 c3
puts [format "{%f %f}" [expr {$c2 - 30.3}] [expr {$c3 - 30.3}]]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。