После импорта процов из пространства имен с параметром force, прокси в глобальном пространстве имен используются auto_load в определенных условиях

попробуйте следующее:)

[(c1, c2, c3) for c1 in cc1 for c2 in cc2 for c3 in cc3]
0
задан Aravind Selvapalani 26 February 2019 в 21:41
поделиться

1 ответ

Рассмотрим, что делает auto_mkindex: он создает файл tclIndex, который содержит

set auto_index(print_name) [list source [file join $dir TypeA.tcl]]
set auto_index(dummy) [list source [file join $dir TypeA.tcl]]
set auto_index(::TypeB::print_name) [list source [file join $dir TypeB.tcl]]

Когда вы namespace import TypeB::*, тогда tcl выполняет source [file join $dir TypeB.tcl], и процесс print_name вытягивается в глобальное пространство имен.

Что происходит, когда вы звоните dummy? this: source [file join $dir TypeA.tcl] - тянет процесс dummy в глобальное пространство имен. Но в то же время, print_name процесс переопределен .

На этом этапе вы все равно можете позвонить TypeB::print_name

Вам нужно будет выполнить одно из:

  • реструктурировать свой код,
  • изменить выполните namespace import TypeB::*, или
  • , очень внимательно относитесь к порядку, в котором вы называете вещи, например, сначала вызывая dummy .
0
ответ дан glenn jackman 26 February 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: