
發(fā)布
注冊
/
登錄命名空間
關注創(chuàng)建者:CAE追夢者 創(chuàng)建時間:2023-10-22

命名空間的實例教程
使用命名空間命令創(chuàng)建命名空間。一個簡單的例子,創(chuàng)建命名空間如下圖所示
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
}
# Create procedures inside the namespace
proc MyMath::Add {a b } {
set ::MyMath::myResult [expr $a + $b]
}
MyMath::Add 10 23
puts $::MyMath::myResult
當執(zhí)行上面的代碼,產(chǎn)生以下結果:
33
namespace eval MyMath {
variable myResult
}
proc MyMath::Add {a b } {
set ::MyMath::myResult [expr $a + $b]
}
MyMath::Add 10 23
puts $::MyMath::myResult
在上面的程序,可以看到有一個變量myResult和程序Add的一個命名空間。這使得創(chuàng)建變量和程序可根據(jù)相同的名稱在不同的命名空間。
以上程序也可以用以下定義函數(shù)的方法實現(xiàn)。
proc Add {a b } {
return [expr $a + $b]
}
set c [Add 10 23]
puts $c
嵌套的命名空間
TCL允許命名空間的嵌套。一個簡單的例子,嵌套的命名空間如下。
展開 在某些情況下,腳本中的名稱沖突會導致一些尷尬的問題,而命名空間的理論可以為這些問題提供強大的解決方案。意識到這一點,我們?yōu)槲覀兊能浖a(chǎn)品RP Fiber Power,RP Resonator,RP Coating 和RP ProPulse完善了命名空間的解決方案。
在本文中,我們將以一個典型示例向您展示問題所在以及使用命名空間的解決方案的工作原理。因此,即使對于使用其他提供命名空間的編程語言的人來說,它也可能是令人感興趣的。例如 C ++; 盡管語法略有不同,但總體思路是相同的。您知道,這些概念通常以非常抽象的方式進行解釋?,F(xiàn)實生活中的一個很好的例子可能會很有幫助。
問題是什么呢?
想象一下,我們?yōu)橐粋€光纖放大器生成了一個計算機模型,該模型具有基于兩個不同光纖的兩個放大器級。例如,前置放大器可能有單模光纖,功率放大器可能有雙包層光纖。
我們的RP Fiber Power軟件帶有大量光纖數(shù)據(jù)文件,主要用于市售光纖,每個文件定義變量,如r_co(纖芯半徑),并定義函數(shù),如s_abs_Yb(l)(吸收截面)。問題很明顯:如果僅包含兩個光纖的數(shù)據(jù)文件,第一個將定義例如 變量r_co,第二個變量將使用其自己的值覆蓋該變量,這就是典型的名稱沖突。
原則上,有一個簡單的解決方案:在其中您重命名的所有變量和函數(shù)中,為第二根光纖創(chuàng)建數(shù)據(jù)文件的副本。例如,從r_co到r_co2。但是,顯然,這并不是很方便。原則上,我們可以提供所有帶有包含某些產(chǎn)品代碼的變量和函數(shù)名稱的數(shù)據(jù)文件,但是使用起來又比較麻煩。誰想要像r_co_CorActive_DCF_10_128這樣的變量名呢?
如何使用命名空間?
命名空間提供了一種恰當?shù)慕鉀Q方案。本質上,您在第一個放大器級使用一個名為stage1的名稱空間,在第二級使用另一個名為stage2的名稱空間。
展開 除了包之外,其它很多元素也可以用作“命名空間”。例如“模型”、“模型庫”、“概要文件”和包類似,相等于一個文件夾?!澳K”也是一個命名空間,它是模塊中的屬性或方法的命名空間。
包導入關系
在SysML圖中顯示的元素并不一定就是這個圖的代表元素包含的元素。根據(jù)模型說明的需要,經(jīng)常也會顯示其它包中的元素。當元素的命名空間不是這個圖的代表元素(默認命名空間),也沒有關系能表示這個元素的命名空間的時候(例如命名空間包含關系,或者在另外一個包的內部顯示),這個元素就會顯示“完全限定名稱”,就是包含了一長串路徑的名稱。有時候,顯示了太長路徑的名稱也不利于顯示和閱讀模型。這時,可以建立一個“包導入”關系(公有或私有),將名稱很長的元素“導入”到當前圖代表元素下面。這時候,被導入的元素就只顯示名稱了。下面是解決方案系統(tǒng)架構圖中顯示邏輯架構中模塊的例子,為了建立和顯示兩個架構之間的抽象映射關系(解決方案架構中模塊應該都有邏輯架構的模塊對應),上圖是沒有導入關系的視圖,下圖是建立了導入關系后的視圖(在MBSES軟件中,模型瀏覽器上包節(jié)點可以通過右鍵菜單直接建立包導入關系,也不一定要顯示到圖中)。
模型庫(ModelLibrary)
模型庫是指一套通用的、可以重復使用的元素。這些元素通常用“模型庫”元素作為它們的命名空間?!澳P蛶臁本褪沁@樣一種專門存放模型庫元素的“包”。
在實施MBSE的過程中,需要將那些通用的、或者以后會重復使用的模型作為模型庫管理起來。在新產(chǎn)品研制、建模的時候,引用這些通用的或已有的模型,會使建模工作起到事半功倍的效果。當然,萬事開頭難,剛開始應用MBSE技術需要打基礎的過程。打好基礎了才能見到成效。
一般企業(yè)實施MBSE,需要建立這些模型庫:
(1)企業(yè)通用的值類型、單位模型庫。產(chǎn)品的性能參數(shù)屬性一般建為模塊的值屬性。
展開 (25)命名(namespace)空間分區(qū)
命名空間是一個有名稱屬性的元素的命名空間。可以把命名空間和磁盤中的“目錄”作用類似看待,不同命名空間下面的元素名稱可以重復。一個元素完整的名稱包括“完整的命名空間”+“::”+“名稱”,這個完整的名稱稱為元素的“完全限定名稱”。作為命名空間的元素一般是包,但是模塊也可以作為命名空間元素。但是在模塊命名空間下面定義的模塊元素只是表示是上層模塊的“嵌套類”元素,它并不表示“組成”關系。
如果把一個模塊拖拽到另外一個模塊上面,上層的模塊會顯示命名空間分區(qū)。
(26)圖形(image)分區(qū)
模塊節(jié)點也可以顯示一個代表模塊的圖片。通過節(jié)點的右鍵菜單“選擇圖片”,可以選擇一個圖片文件,顯示在節(jié)點下方。
結構分區(qū)、命名空間分區(qū)、圖形分區(qū)的示例如下(涂個顏色):
模塊的自定義分區(qū)
模塊節(jié)點除了顯示上述標準的26種分區(qū),用戶還可以添加多個自定的分區(qū)。每個自定義分區(qū)的名稱和分區(qū)中顯示的屬性都可以自定義。而且自定義分區(qū)開可以通過泛化關系繼承。通過這個功能,用戶可以定義一個“基類”作為模板,然后需要的模塊從這個模板類繼承,可以立即為這些繼承類增加標準化的屬性。如下定義了一個“六性”基類模塊,在另外一個模塊繼承它、應用的例子。
文章來源:智睿思維MBSE
展開 使用命名空間 std
?
這用于將 std命名空間的實體導入到程序的當前命名空間中。它基本上是聲明 C++ 的所有內置功能的空間。例如,std::cout。
?
int main() { }
?
main() 函數(shù)是每個 C++ 程序的入口點,無論該函數(shù)位于程序中的哪個位置。左大括號 '{' 表示 main 函數(shù)的開始,右大括號 '}' 表示 main 函數(shù)的結束。
?
cout<<“Hello World”;
cout是用于在控制臺屏幕上顯示輸出的工具(對象)。雙引號 “ ” <<字符后面的所有內容都顯示在輸出屏幕上。語句末尾的分號字符用于指示語句在此處結束。
返回 0
此語句用于從函數(shù)返回值,并指示函數(shù)的完成。在這里,它用于發(fā)送成功執(zhí)行 main 函數(shù)的信號。
?
展開 
命名空間的相關專題、標簽、搜索
命名空間的最新內容
此外,RayTrace.dll 這個動態(tài)連結函式庫涵蓋了以下的界面,并且繼承了 ZOSAPI.Tools.RayTrace 的命名空間:
IRayTraceDirectPolData (sequential):
在這個界面中,我們可以直接在 XYZ 坐標中完成批次的偏振光線追跡,而這也和 DDE 光線追跡指令(模式3)十分相似。
此外,RayTrace.dll 這個動態(tài)連結函式庫涵蓋了以下的界面,并且繼承了 ZOSAPI.Tools.RayTrace 的命名空間:
IRayTraceDirectPolData (sequential):
在這個界面中,我們可以直接在 XYZ 坐標中完成批次的偏振光線追跡,而這也和 DDE 光線追跡指令(模式3)十分相似。
使用命名空間 std
?
這用于將 std命名空間的實體導入到程序的當前命名空間中。它基本上是聲明 C++ 的所有內置功能的空間。例如,std::cout。
?
int main() { }
?
main() 函數(shù)是每個 C++ 程序的入口點,無論該函數(shù)位于程序中的哪個位置。
使用命名空間命令創(chuàng)建命名空間。
//自定義頭文件部分
#
include
"error.h"
#
include
"output.h"
#
include
"solver.h"
#
include
"userInput.h"
3.輔助信息輸出部分
第一行表示命名空間
包是包中元素的“命名空間”?!?em>命名空間”是為了唯一標識一個模型元素的空間,在一個“命名空間”中,不允許元素的名稱重復。例如,在一個房子中每個人的名字是唯一的,在一層樓中每個房子的名稱(編號)也是唯一的。再向上,這個大樓、小區(qū)等各層空間的名稱都唯一,這樣就可以建立一套唯一的路徑名稱。
行為元素也是有命名空間的,如果行為直接定義在一個包下面,這個包就是它的命名空間;如果定義在一個模塊下面,模塊的名稱就是它的命名空間。
< parameter-list>:輸入?yún)?shù)的列表,每個參數(shù)用“,”分隔。
(25)命名(namespace)空間分區(qū)
命名空間是一個有名稱屬性的元素的命名空間??梢园?em>命名空間和磁盤中的“目錄”作用類似看待,不同命名空間下面的元素名稱可以重復。一個元素完整的名稱包括“完整的命名空間”+“::”+“名稱”,這個完整的名稱稱為元素的“完全限定名稱”。作為命名空間的元素一般是包,但是模塊也可以作為命名空間元素。
Tcl/Tk: package require PWI_Glyph 2 # 建立 'pw' 命名空間
Python: glf = GlyphClient(port=0)
pw = glf.get_glyphapi()
2. Glyph 類名對于 Python 和 Tcl 都是區(qū)分大小寫的,因此名稱必須完全匹配。
3. 所有字形類都是頂級(“pw”)對象的有效屬性。
在本課中,我的協(xié)作空間被命名為Quick Start xDesign。我在儀表板中為xDesign類創(chuàng)建了一個Tab,名為ED-1310。
默認單位為mm。
插入部件和配合部件
插入第一個元件,平板桿-5孔。
在操作欄中單擊“程序集”選項卡中的“插入”。
將顯示“打開”框。使用搜索和6W標簽查找導入的SOLIDWORKS零件。