VivadoAndTcl: namespace

命名空间,其实际是一系列变量和过程的合集,从而让TCL 解释器能够对这些变量和过程进行分类管理。

复制代码
# 声明如下
namespace eval ns0 {
    proc print {} {
        puts "Tcl Proc 0"    
    }
    proc add {a b} {
        return [expr {$a + $b}]    
    }
}

namespace eval ns1 {
    proc print {} {
        puts "Tcl Proc1"    
    }
    proc sub {a b} {
        return [expr {$a - $b}]    
    }
}
# 调用如下
# 该语句调用了ns0里的print过程
ns0::print
# 该语句进行了4+5的计算
ns0:add 4 5

如果一个命名空间里的不同过程之间是有关联的,需要用到同一个变量时,就可以创建命名空间变量。

复制代码
namespace eval counter {
    variable cnt 0
    proc AddOne {} {
        variable cnt
        return [incr cnt]    
    }
    
    proc SubOne {} {
        variable cnt
        return [incr cnt -1]    
    }
    
    proc reset {} {
        variable cnt
        set cnt 0    
    }
}
# 调用如下
# 该语句调用了counter里的加一过程
[counter::AddOne]
# 该语句进行了counter里的减一过程
[counter::SubOne]
# 该语句进行了counter里的复位过程
[counter::reset]
相关推荐
博览鸿蒙6 小时前
FPGA 开发软件学习笔记分享(内含安装与环境配置)
笔记·学习·fpga开发
希言自然也10 小时前
赛灵思KU系列FPGA的ICAPE3原语和MultiBoot功能
fpga开发
Flamingˢ10 小时前
FPGA实战:基于Verilog的数码管动态扫描驱动设计与仿真验证
fpga开发
GateWorld10 小时前
跨时钟域同步(CDC)握手协议
fpga开发·cdc·asic·跨时钟域同步·握手协议
Flamingˢ11 小时前
Verilog中reg与wire的区别:从语法到实战
学习·fpga开发·硬件工程
数字芯片实验室12 小时前
边界值测试:一个”==”引发的芯片bug
fpga开发·bug
9527华安12 小时前
FPGA实现Aurora8B10B视频转UVC传输,基于GTP高速收发器+FT602芯片架构,提供4套工程源码和技术支持
fpga开发·gtp·uvc·aurora8b10b·ft602
tiantianuser12 小时前
RDMA设计31:RoCE v2 发送模块3
fpga开发·rdma·cmac·roce v2
海涛高软1 天前
verlog中阻塞赋值和非阻塞赋值
fpga开发
tiantianuser1 天前
RDMA设计29:RoCE v2 发送及接收模块设计2
服务器·fpga开发·rdma·fpga设计·高速传输