каков результат этого процесса в tcl? - PullRequest
0 голосов
/ 03 ноября 2011

У меня вопрос по поводу следующей процедуры:

proc setDefault {{nampspaceList "ALL"}} {
    if {$nampspaceList == "ALL"} {
        set nampspaceList "namespace1 namespace2 namespace3"
    }
    foreach ns $nampspaceList {
        append ns "::setDefault"
        $ns
    }
}

Добавленный ns - это ":: setDefaultnamespace1namespace2namespace3", но каково значение & ns в цикле foreach: каждый раз, добавляя пространство имен, он выводит результат один раз?

Ответы [ 2 ]

3 голосов
/ 03 ноября 2011

Цикл foreach в вашей процедуре проходит по списку, содержащемуся в переменной nampspaceList, и для каждого элемента в списке он создает команду, добавляя к ней ::setDefault.

Затем строка $ns пытается выполнить эту команду.

1 голос
/ 03 ноября 2011

Эмм, нет, окончательное значение ns после запуска цикла foreach равно "[lindex $ nampspaceList end] :: setDefault", потому что в каждой итерации ns устанавливается для каждого элемента в списке $ nampspaceList.

Вы можете проверить это, добавив несколько позиций в середину кода.

Например, для вызова его с помощью: setDefault {ns1 ns2 ns3} будет установлено значение ns ns1::setDefault (после добавления ":: setDefault""), ns2::setDefault и ns3::setDefault.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...