2017-02-10 3 views
0

Мне нужно создать переменную с именем $ Project только один раз. В рамках этого проекта необходимо создать несколько портов инструмента. Без вызова функции код выглядит следующим образом:Передача одного выхода функции в другую функцию в tcl

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 в create_ports? Или, есть ли более простой способ достичь этого?

Прошу совета.

ответ

0

Вы можете легко вызвать команды вызова; синтаксис [ ... ] полностью общий.

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

Хорошо, что это нужно, полностью зависит от того, что делает ваша программа. (Правила применяются к процедурам такой же, как и любые другие команды, процедуры только команды, которые случаются быть реализованы с помощью сценариев, которые работают с локальным фрейме стека.)

0

Вы могли бы хотеть что-то вроде:

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] 
}