在 tcl 脚本中将字符串类型转换为整数类型。就像一个数字是字符串类型,我想增加它所以如何在 tcl 中修复它

conversion string type into integer type in tcl script. like that a number is type of string and I want to increment it so how to fix it in tcl

如何在tcl中将字符串类型转换为整数类型script.like我从另一个文件中获取数据,它是字符串类型。我想增加那个字符串类型的数字,那么怎么做呢。

在 Tcl 中一切都是字符串。阅读此处 http://wiki.tcl.tk/3018

如果您使用 incr 递增,它将解释该值,如果该值被解释为整数,它将递增

Ashish 的答案是正确的。我试图添加一个示例作为对他的回答的评论,但无法清楚地格式化它,所以我添加为一个单独的答案。这是一个例子:

% set val "123"
123
% incr val
124
% puts $val
124
% set val "abc"
abc
% incr val
expected integer but got "abc"
% puts $val
abc
% 

Tcl 基本上对您隐藏了所有类型;该值是值,无论其类型如何,并且所有类型都可以序列化为字符串。人们常说“一切都是字符串”,虽然这在形式上是不准确的,但语言合谋使它看起来好像是真的。因此,如果它看起来像一个整数,那么从 incr 的角度来看,它 一个整数(这绝对是推荐的惯用自增方法)。

但是,您可以使用 scan 命令来进一步强制使用整数。 (这很像 C 中的 sscanf(),如果你知道的话。)

scan $myValue %d myInteger
incr myInteger

如果您要正确使用 scan,您可能应该检查它的结果,即成功扫描的字段数。

if {[scan $myValue %d%c myInteger dummy] != 1} {
    error "\"$myValue\" isn't a proper integer"
}
incr myInteger

你也可以使用string is integer;由于历史原因,-strict 选项应该与此一起使用。

if {![string is integer -strict $myValue]} {
    error "\"$myValue\" isn't a proper integer"
}
incr myValue

很多人不会理会这些,只是直接增加(包含该变量的)值。如果不可能,它会显示默认错误消息。

incr myValue

Tcl 总是试图告诉您出现问题时出了什么问题,以及问题的实际位置。请记住检查堆栈跟踪的 errorInfo 全局变量……