![]() |
Tcl/Tk
Curso On-Line de Programação |
Trabalhando com Namespaces
Namespaces oferecem uma forma eficiente de encapsular variáveis e procedimentos, especialmente no caso de bibliotecas.
Um namespace é um espaço nomeado, dentro do qual podemos definir nossos procedimentos e variáveis sem poluir o espaço global com dezenas de definições, muitas vezes conflitantes.
De fato, tudo hoje, em Tcl é definido em termos de namespaces. Variáveis globais estão contidas no namespace global e a maior parte das extensões são definidas dentro de um namespace com o mesmo nome da extensão. Veja um exemplo: uma biblioteca matemática chamada Math, poderá definir seus procedimentos em um namespace Math e nos referiríamos a uma procedure quadradro de x, x2, como Math::x2.
Os principais
comandos para tratamento de namespaces são:
| Comando | Descrição |
| namespace children | Retorna uma lista de todos os namespaces filhos do namespace dado, que correspondem ao padrão fornecido. |
| namespace code | Retorna um novo script, que ao ser avaliado, faz com que o script dado seja executado no namespace atual. |
| namespace current | Retorna o nome completo do namespace dado. |
| namespace delete | Apaga cada um dos namespaces dados. |
| namespace eval | Ativa o namespace e avalia a concatenação dos argumentos em seu interior. |
| namespace export | Adiciona os comandos que correspondem ao padrão dado, à lista de comandos exportados. A opção -clear faz com que a lista anterior seja apagada e uma nova seja criada. |
| namespace forget | Remove os comandos importados, que correspondem ao padrão fornecido, do namespace atual. |
| namespace import | Importa os comandos que correspondem ao padrão dado, para o namespace atual. A opção -force substitui os comandos existentes. |
| namespace inscope | Ativa o namespace dado e avalia, em seu interior, a concatenação dos argumentos dados. |
| namespace origin | Retorna o caminho completo do comando dado. |
| namespace parent | Retorna o caminho completo do namespace pai do namespace dado. |
| namespace qualifiers | Retorna qualquer qualificador de namespace existente na string dada. |
| namespace tail | Retorna o nome simples, sem o qualificador de namespace a partir da string dada. |
| namespace which | Retorna o caminho completo de um comando dado, incluindo o namespace, se a opção -command for utilizada, ou. o caminho completo de uma variável dada, se a opção -variable for utilizada. |
| variable | Cria uma ou mais variáveis, no namespace atual, opcionalmente, atribuindo um valor a ela. |
Exemplo
# Define o pacote
package provide Math 1.0
# Cria o namespace
namespace eval Math {
# Define os comandos a serem exportados( neste caso, todos )
namespace export *
}
# Cria uma procedure no interior do namespace( neste caso, x2 )
proc Math::x2 {value} {
set ret "[expr $value * $value]"
return $ret
}
Neste caso, a procedure x2 poderá
ser acessada de duas formas:
package require Math namespace import Math::* puts [x2 4]
Ou
package require Math puts [Math::x2 4]
Para uma descrição detalhada
de todas as funções para tratamento de namespaces, consulte
a documentação on-line, ou o
Tcl/Tk
Reference Guide, ou ainda o Tcl/Tk
Electronic Reference.
Para maiores
informações envie e-mail para
info@souzamonteiro.com.
| http://www.souzamonteiro.com |
Copyright(C) 2000 by Roberto Luiz Souza Monteiro