在tcl中存储,使用为同一程序生成的值?

在tcl中存储,使用为同一程序生成的值?,tcl,Tcl,我有一个tcl代码,它为一些参数生成一些值。现在我想存储这些值,并将它们与同一个程序但不同的参数一起使用。怎么做呢?要在整个程序的一次运行中存储一个值,请将其放入变量中 set theVariable "the value is foo bar" 要在以后的程序运行中存储值,可能需要将其写入文件。最简单的方法如下: # To store: set f [open theSettingsFile.dat w] puts $f $theVariable close $f Tcl作为Tcl,您还可

我有一个tcl代码,它为一些参数生成一些值。现在我想存储这些值,并将它们与同一个程序但不同的参数一起使用。怎么做呢?

要在整个程序的一次运行中存储一个值,请将其放入变量中

set theVariable "the value is foo bar"

要在以后的程序运行中存储值,可能需要将其写入文件。最简单的方法如下:

# To store:
set f [open theSettingsFile.dat w]
puts $f $theVariable
close $f
Tcl作为Tcl,您还可以将其存储为脚本,您可以
source

# To store:
set f [open theSettingsFile.tcl]
puts $f [list set theVariable $theVariable]
close $f
对于复杂的事情,使用像SQLite这样的数据库可能是个好主意:

# To store:
package require sqlite3
sqlite3 db theSettings.db
db eval {CREATE TABLE IF NOT EXISTS settings (key TEXT, value TEXT)}
# Note; the below is SQL-injection safe    
db eval {INSERT INTO settings (key, value) VALUES ('theVariable',$theVariable)}
db close

但这对于保存一个简单的字符串来说太过分了。

你的问题不是很清楚。你能详细说明一下吗?我想使用第一次生成的变量的值。在第二次运行期间,你可能会将值写入文件,然后在第二次运行时读取该文件以获取它们?Jerry除此之外,还有其他选项吗,这正是我要找的吗?对不起,我不知道还有没有别的办法。也许其他人可以过来解释一下。
# To load:
source theSettingsFile.tcl
# To store:
package require sqlite3
sqlite3 db theSettings.db
db eval {CREATE TABLE IF NOT EXISTS settings (key TEXT, value TEXT)}
# Note; the below is SQL-injection safe    
db eval {INSERT INTO settings (key, value) VALUES ('theVariable',$theVariable)}
db close
# To load:
package require sqlite3
sqlite3 db theSettings.db
db eval {SELECT value FROM settings WHERE key = 'theVariable'} {
    set theVariable $value
}
db close