将一个函数输出传递给tcl中的其他函数

将一个函数输出传递给tcl中的其他函数,tcl,Tcl,我只需要创建一个名为$Project的变量一次。需要在此项目下创建仪器的多个端口。没有任何函数调用,代码如下所示: set Project(1) [stc::create "Project" \ -SelectedTechnologyProfiles {eoam ospfv2 isis dhcp} \ -ConfigurationFileName {new.tcl} \ -Active "TRUE" \ -LocalActive "TRUE" \ -Na

我只需要创建一个名为$Project的变量一次。需要在此项目下创建仪器的多个端口。没有任何函数调用,代码如下所示:

 set Project(1) [stc::create "Project" \
    -SelectedTechnologyProfiles {eoam ospfv2 isis dhcp} \
    -ConfigurationFileName {new.tcl} \
    -Active "TRUE" \
    -LocalActive "TRUE" \
    -Name {Project 1} ]

    # create ports
    set Port(1) [stc::create port -under $Project(1) -location //$ipaddress/1/1 ]

    set Port(2) [stc::create port -under $Project(1) -location //$ipaddress/1/2 ]
现在,如果我创建一个名为“create_project”的过程和另一个名为“create_ports”的过程(根据端口的数量可能会调用多次),那么我的问题是如何将$project传递给create_ports?create_project是否应返回$project,并且我必须再次传递$project以创建_端口?或者,有更简单的方法来实现这一点


请给出建议。

您可以很容易地链接命令调用;
[
..
]
语法是完全通用的

set port [stc::create port -under [stc::create Project ...] ...]

这样做是否是一个好主意完全取决于您的程序正在做什么。(规则适用于过程的方式与任何其他命令相同;过程只是碰巧使用与本地堆栈框架一起运行的脚本实现的命令。)

您可能希望类似于:

proc create_project {name number} {
    return [stc::create "Project" \
        -SelectedTechnologyProfiles {eoam ospfv2 isis dhcp} \
        -ConfigurationFileName new.tcl \
        -Active TRUE \
        -LocalActive TRUE \
        -Name "$name $number" \
    ]
}

proc create_port {project number} {
    global ipaddress
    return [stc::create port -under $project -location //$ipaddress/1/$number ]
}

set pname "Project"
set pnum 1
set proj($pname,$pnum) [create_project $pname $pnum]
# create ports
for {set i 1} {$i <= 5} {incr i} {
    set port($i) [create_port $proj($pname,$pnum) $i]
}
proc create_项目{name number}{
返回[stc::创建“项目”\
-所选技术配置文件{eoam ospfv2 isis dhcp}\
-ConfigurationFileName new.tcl\
-主动真实\
-LocalActive TRUE\
-名称“$Name$number”\
]
}
proc create_端口{项目编号}{
全球IP地址
返回[stc::创建端口-在$project下-位置//$ipaddress/1/$number]
}
设置pname“项目”
设置pnum 1
设置项目($pname,$pnum)[创建项目$pname$pnum]
#创建端口
对于{set i 1}{$i