在 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
全局变量……
如何在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
全局变量……