首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们可以将itcl类对象写到外部文件中吗?

我们可以将itcl类对象写到外部文件中吗?
EN

Stack Overflow用户
提问于 2015-03-23 14:28:37
回答 1查看 116关注 0票数 1

我有一个简单的class对象,其中包含一组特定的数据。

代码语言:javascript
复制
package require Itcl
itcl::class myDataSet {
    public variable var1 "data1"
    public variable var2 "data2"
    public variable var3 "data3"

    method setVals { v1  v2 v3 } {
        set var1 $v1
        set var2 $v2
        set var3 $v3
    }
}

myDataSet dataObj1
dataObj1 setVals "1" "abc" "1.23"

有没有一种方法可以像在C中那样将itcl对象直接写到外部文件中?

像这样,

代码语言:javascript
复制
set fPtr [open "myStorageFile" "w"]
puts $fPtr dataObj1
close $fPtr
EN

回答 1

Stack Overflow用户

发布于 2015-03-25 00:03:21

要做到这一点,最简单的方法是为每个类提供一个“写入通道”方法,其中的序列化格式是Tcl脚本。因为您已经有了一个方法来设置所有的值,所以这很简单:

代码语言:javascript
复制
method saveYourself {channel} {
    puts $channel "if {\"$this\" ni \[[list info commands $this]\]} {"
    puts $channel [list [$this info class] $this]
    puts $channel [list $this setVals $var1 $var2 $var3]
    puts $channel "}"
}

你可以这样叫它:

代码语言:javascript
复制
set fPtr [open "myStorageFile" "w"]
dataObj1 saveYourself $fPtr
close $fPtr

然后,将对象重新加载进来,只需对写出这些内容的文件执行source操作即可。请注意,我在使用list构建创建对象的命令时非常小心,如果对象已经存在,它不会覆盖该对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29204358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档