初識Tcl(十一) Tcl 命名空間

2021-09-05 08:37:28 字數 1485 閱讀 2310

目錄

建立命名空間

巢狀的命名空間

匯入和匯出空間

忘記命名空間

命名空間是乙個容器組識別符號,用於組變數和程式。命名空間可從tcl 8.0版開始使用。引入命名空間之前,有乙個全域性範圍。現在有了命名空間,我們可以分割槽全域性範圍。

使用命名空間命令建立命名空間。乙個簡單的例子,建立命名空間如下圖所示

#!/usr/bin/tclsh

namespace eval mymath

# create procedures inside the namespace

proc mymath::add

mymath::add 10 23

puts $::mymath::myresult

當執行上面的**,產生以下結果:

33
在上面的程式,可以看到有乙個變數myresult和程式add的乙個命名空間。這使得建立變數和程式可根據相同的名稱在不同的命名空間。

tcl允許命名空間的巢狀。乙個簡單的例子,巢狀的命名空間如下。

#!/usr/bin/tclsh

namespace eval mymath

namespace eval extendedmath

}set ::mymath::myresult "test1"

puts $::mymath::myresult

set ::extendedmath::mymath::myresult "test2"

puts $::extendedmath::mymath::myresult

當執行上面的**,產生以下結果:

test1

test2

可以在前面的例子命名空間看到,我們使用了大量的作用範圍解決運算子,它們的使用變得更複雜。我們可以通過匯入和匯出命名空間避免這種情況。下面給出乙個例子。

#!/usr/bin/tclsh

namespace eval mymath

# create procedures inside the namespace

proc mymath::add

namespace import mymath::*

puts [add 10 30]

當執行上面的**,產生以下結果:

40
可以通過使用forget子刪除匯入的命名空間。乙個簡單的例子如下所示。

#!/usr/bin/tclsh

namespace eval mymath

# create procedures inside the namespace

proc mymath::add

namespace import mymath::*

puts [add 10 30]

namespace forget mymath::*

當執行上面的**,產生以下結果:

40

tcl指令碼學習十一 proc應用 (帶預設引數)

lesson 11 proc應用 帶預設引數 1.使用過程的時候,不一定輸入所有的引數值。過程的輸入引數可以有預設值。預設值由 指定。如果呼叫過程時沒有指定這些引數的值則會使用其預設值,否則使用輸入值來替代預設值。在使用預設引數的時候要注意,如果預設引數之後還有 非預設引數,則在呼叫此過程的時候,預...

C 初識命名空間

c 命名空間 命名空間 是為了防止名字衝突而把一系列的型別 變數 函式放在一起的一種方式,在作用域範圍內使用命名空間就可以訪問該命名空間內定義的符號。它可以解決c語言命名衝突的問題,c 命名空間即可以定義函式,也可以定義變數。定義命名空間 關鍵字是 namespace 後面加命名空間的名稱。例如 n...

03 初識類與命名空間

類庫的引用 專案引用即白盒引用 依賴關係 排除錯誤 using system using system.collections.generic using system.linq using system.text using system.threading.tasks 命名空間helloworl...