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

时间:2014-03-27 17:17:23

标签: tcl

我有一个tcl代码为某些参数生成一些值。现在我想存储这些值并使用相同的程序但不同的参数。可以这样做吗?

1 个答案:

答案 0 :(得分:1)

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

set theVariable "the value is foo bar"

要在以后的另一次运行中为以后的存储值,您可能需要将其写入文件。最简单的方法是:

# To store:
set f [open theSettingsFile.dat w]
puts $f $theVariable
close $f
# To load:
set f [open theSettingsFile.dat]
set theVariable [gets $f]
close $f

Tcl是Tcl,您也可以将其存储为可以source的脚本:

# To store:
set f [open theSettingsFile.tcl]
puts $f [list set theVariable $theVariable]
close $f
# To load:
source theSettingsFile.tcl

对于复杂的事情,使用像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
# To load:
package require sqlite3
sqlite3 db theSettings.db
db eval {SELECT value FROM settings WHERE key = 'theVariable'} {
    set theVariable $value
}
db close

但是这对于保存一个简单的字符串来说是非常难以理解的。