
發布
注冊
/
登錄命名空間的案例
TCL自學筆記-14 定義命名空間
使用命名空間命令創建命名空間。一個簡單的例子,創建命名空間如下圖所示
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
當執行上面的代碼,產生以下結果:
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的一個命名空間。這使得創建變量和程序可根據相同的名稱在不同的命名空間。
以上程序也可以用以下定義函數的方法實現。
proc Add {a b } {
return [expr $a + $b]
}
set c [Add 10 23]
puts $c
嵌套的命名空間
TCL允許命名空間的嵌套。一個簡單的例子,嵌套的命名空間如下。
展開 RP 系列 | 命名空間:避免名稱沖突的一種好方法
在某些情況下,腳本中的名稱沖突會導致一些尷尬的問題,而命名空間的理論可以為這些問題提供強大的解決方案。意識到這一點,我們為我們的軟件產品RP Fiber Power,RP Resonator,RP Coating 和RP ProPulse完善了命名空間的解決方案。
在本文中,我們將以一個典型示例向您展示問題所在以及使用命名空間的解決方案的工作原理。因此,即使對于使用其他提供命名空間的編程語言的人來說,它也可能是令人感興趣的。例如 C ++; 盡管語法略有不同,但總體思路是相同的。您知道,這些概念通常以非常抽象的方式進行解釋。現實生活中的一個很好的例子可能會很有幫助。
問題是什么呢?
想象一下,我們為一個光纖放大器生成了一個計算機模型,該模型具有基于兩個不同光纖的兩個放大器級。例如,前置放大器可能有單模光纖,功率放大器可能有雙包層光纖。
我們的RP Fiber Power軟件帶有大量光纖數據文件,主要用于市售光纖,每個文件定義變量,如r_co(纖芯半徑),并定義函數,如s_abs_Yb(l)(吸收截面)。問題很明顯:如果僅包含兩個光纖的數據文件,第一個將定義例如 變量r_co,第二個變量將使用其自己的值覆蓋該變量,這就是典型的名稱沖突。
原則上,有一個簡單的解決方案:在其中您重命名的所有變量和函數中,為第二根光纖創建數據文件的副本。例如,從r_co到r_co2。但是,顯然,這并不是很方便。原則上,我們可以提供所有帶有包含某些產品代碼的變量和函數名稱的數據文件,但是使用起來又比較麻煩。誰想要像r_co_CorActive_DCF_10_128這樣的變量名呢?
如何使用命名空間?
命名空間提供了一種恰當的解決方案。本質上,您在第一個放大器級使用一個名為stage1的名稱空間,在第二級使用另一個名為stage2的名稱空間。
展開 MBSE建模學習之十:包圖及模型擴展
除了包之外,其它很多元素也可以用作“命名空間”。例如“模型”、“模型庫”、“概要文件”和包類似,相等于一個文件夾。“模塊”也是一個命名空間,它是模塊中的屬性或方法的命名空間。
包導入關系
在SysML圖中顯示的元素并不一定就是這個圖的代表元素包含的元素。根據模型說明的需要,經常也會顯示其它包中的元素。當元素的命名空間不是這個圖的代表元素(默認命名空間),也沒有關系能表示這個元素的命名空間的時候(例如命名空間包含關系,或者在另外一個包的內部顯示),這個元素就會顯示“完全限定名稱”,就是包含了一長串路徑的名稱。有時候,顯示了太長路徑的名稱也不利于顯示和閱讀模型。這時,可以建立一個“包導入”關系(公有或私有),將名稱很長的元素“導入”到當前圖代表元素下面。這時候,被導入的元素就只顯示名稱了。下面是解決方案系統架構圖中顯示邏輯架構中模塊的例子,為了建立和顯示兩個架構之間的抽象映射關系(解決方案架構中模塊應該都有邏輯架構的模塊對應),上圖是沒有導入關系的視圖,下圖是建立了導入關系后的視圖(在MBSES軟件中,模型瀏覽器上包節點可以通過右鍵菜單直接建立包導入關系,也不一定要顯示到圖中)。
模型庫(ModelLibrary)
模型庫是指一套通用的、可以重復使用的元素。這些元素通常用“模型庫”元素作為它們的命名空間。“模型庫”就是這樣一種專門存放模型庫元素的“包”。
在實施MBSE的過程中,需要將那些通用的、或者以后會重復使用的模型作為模型庫管理起來。在新產品研制、建模的時候,引用這些通用的或已有的模型,會使建模工作起到事半功倍的效果。當然,萬事開頭難,剛開始應用MBSE技術需要打基礎的過程。打好基礎了才能見到成效。
一般企業實施MBSE,需要建立這些模型庫:
(1)企業通用的值類型、單位模型庫。產品的性能參數屬性一般建為模塊的值屬性。
展開 MBSE建模學習之一:有26種分區,先說說模塊(Block)建模
(25)命名(namespace)空間分區
命名空間是一個有名稱屬性的元素的命名空間。可以把命名空間和磁盤中的“目錄”作用類似看待,不同命名空間下面的元素名稱可以重復。一個元素完整的名稱包括“完整的命名空間”+“::”+“名稱”,這個完整的名稱稱為元素的“完全限定名稱”。作為命名空間的元素一般是包,但是模塊也可以作為命名空間元素。但是在模塊命名空間下面定義的模塊元素只是表示是上層模塊的“嵌套類”元素,它并不表示“組成”關系。
如果把一個模塊拖拽到另外一個模塊上面,上層的模塊會顯示命名空間分區。
(26)圖形(image)分區
模塊節點也可以顯示一個代表模塊的圖片。通過節點的右鍵菜單“選擇圖片”,可以選擇一個圖片文件,顯示在節點下方。
結構分區、命名空間分區、圖形分區的示例如下(涂個顏色):
模塊的自定義分區
模塊節點除了顯示上述標準的26種分區,用戶還可以添加多個自定的分區。每個自定義分區的名稱和分區中顯示的屬性都可以自定義。而且自定義分區開可以通過泛化關系繼承。通過這個功能,用戶可以定義一個“基類”作為模板,然后需要的模塊從這個模板類繼承,可以立即為這些繼承類增加標準化的屬性。如下定義了一個“六性”基類模塊,在另外一個模塊繼承它、應用的例子。
文章來源:智睿思維MBSE
展開 
編寫第一個 C++ 程序 – Hello World 示例
使用命名空間 std
?
這用于將 std命名空間的實體導入到程序的當前命名空間中。它基本上是聲明 C++ 的所有內置功能的空間。例如,std::cout。
?
int main() { }
?
main() 函數是每個 C++ 程序的入口點,無論該函數位于程序中的哪個位置。左大括號 '{' 表示 main 函數的開始,右大括號 '}' 表示 main 函數的結束。
?
cout<<“Hello World”;
cout是用于在控制臺屏幕上顯示輸出的工具(對象)。雙引號 “ ” <<字符后面的所有內容都顯示在輸出屏幕上。語句末尾的分號字符用于指示語句在此處結束。
返回 0
此語句用于從函數返回值,并指示函數的完成。在這里,它用于發送成功執行 main 函數的信號。
?
展開 ZEMAX軟件使用教程:在ZOS-API中執行系統分析的基本方法
作者 Alexandra CullerOpticStudio包含ZOS-API的大量幫助文檔,您可以在編程選項卡 (Programming tab) 查找:通過這些文檔可以導航到 ZOSAPI.分析命名空間參考 (ZOSAPI.Analysis Namespace Reference) 找到所有分析命令的列舉情況。盡管對于某些特定分析有其特有的分析方法,但是常規方法New_Analysis() 可用于打開任何分析類型。此方法需要將分析的列舉字符作為輸入。在找到適當的列舉情況后,您可以使用以下內容來進行分析:my_analysis = TheSystem.Analyses.New_Analysis(ZOSAPI.Analysis.AnalysisIDM.ANALYSIS_ENUMERATOR_HERE);打開后,通常有兩種方式進行分析設置的調整。首先,一些常用分析具有特定分析的設置界面。一個典型示例是IAS_FftMtf。所有分析設置接口都位于ZOSAPI.分析設置命名空間 (ZOSAPI.Analysis.Settings Namespace) 中。 您還可以使用HasAnalysisSpecificSettings屬性檢查是否您的分析具有設置界面:my_analysis.HasAnalysisSpecificSettings如果命令返回“ 0”,則說明分析沒有完備可用的設置接口。這意味著無法通過API進行分析設置,而必須通過第二個選項(即IAS_ModifySettings命令)進行更改,該命令直接修改用于分析的設置文件(.cfg文件):ModifySettings命令與ZPL中的MODIFYSETTINGS關鍵字的工作方式非常相似。當您打開分析并調整設置后,您需要重新運行分析并查閱結果。
展開 MBSE建模學習之三:系統功能--行為(Behavior)的說明
行為元素也是有命名空間的,如果行為直接定義在一個包下面,這個包就是它的命名空間;如果定義在一個模塊下面,模塊的名稱就是它的命名空間。
< parameter-list>:輸入參數的列表,每個參數用“,”分隔。每個參數的語法如下:
<parameter>::=[<direction>] <parameter-name> ’:’<type-expression> [’[’<multiplicity-range>’]’] [’=’<default>][’{’ <parm-property> [’,’ <parm-property>]* ’}’]
對應中文,每個參數用“方向 名稱:類型[多重性]=默認值{參數屬性}”這樣的格式。
<direction>:’in’ | ’out’ | ’inout’ (默認’in’),表示參數是傳入、傳出或同時是,“無”的話默認是傳入。
<parameter-name>:參數名稱。
<type-expression>:參數類型。
<multiplicity-range>:集合參數的話參數的數量最少、最多多少個。
= <default>:參數默認值。
展開 ZEMAX | 在 ZOS-API 中執行系統分析的基本方法
OpticStudio 包含 ZOS-API 的大量幫助文檔,您可以在編程選項卡 (Programming tab) 查找:
通過這些文檔可以導航到 ZOSAPI.分析命名空間參考 (ZOSAPI.Analysis Namespace Reference) 找到所有分析命令的列舉情況。
盡管對于某些特定分析有其特有的分析方法,但是常規方法 New_Analysis() 可用于打開任何分析類型。此方法需要將分析的列舉字符作為輸入。在找到適當的列舉情況后,您可以使用以下內容來進行分析:
my_analysis= TheSystem.Analyses.New_Analysis(ZOSAPI.Analysis.AnalysisIDM.ANALYSIS_ENUMERATOR_HERE);
打開后,通常有兩種方式進行分析設置的調整。首先,一些常用分析具有特定分析的設置界面。一個典型示例是 IAS_FftMtf 。所有分析設置接口都位于 ZOSAPI. 分析設置命名空間 (ZOSAPI.Analysis.Settings Namespace) 中。您還可以使用HasAnalysisSpecificSettings 屬性檢查是否您的分析具有設置界面:
my_analysis.HasAnalysisSpecificSettings
如果命令返回“ 0”,則說明分析沒有完備可用的設置接口。這意味著無法通過 API 進行分析設置,而必須通過第二個選項(即 IAS_ModifySettings 命令)進行更改,該命令直接修改用于分析的設置文件( .cfg 文件):
ModifySettings 命令與 ZPL 中的 MODIFYSETTINGS 關鍵字的工作方式非常相似。當您打開分析并調整設置后,您需要重新運行分析并查閱結果。
展開 干貨 | Qt編程規范
若使用能帶來極大便利,命名時需在變量前加g_前綴,例如:
int g_myValue;
5)常量命名
常量不含前綴且應該大寫,單詞間有下劃線,包括全局常量和宏定義,例如:
const int MY_VALUE=0;#define MY_VALUE 0
6)函數命名
函數名是動詞或含有動詞的短語,首單詞以小寫字母開頭,后續單詞以大寫字母開頭,例如:
int getMyValue();int setMyeValue(int value)
函數參數所有字母小寫,單詞間有下劃線,若為非基本數據類型,使用const引用,例如:
setColor(const QColor & new_color)
7)枚舉命名
枚舉名和枚舉值都是名詞,每個單詞以大寫字母開頭,且第一個單詞是Enum,例如:
enum EnumMyColor //枚舉名{EnumWhite, //枚舉值EnumBlack};
8)命名空間
命名空間的名稱是名詞,每個單詞以大寫字母開頭,且前兩個單詞是BaiDi,例如:
namespace BaoDiProject{ }
9)結構體命名
結構體中只定義變量,不定義函數。
結構體名是名詞,每個單詞以大寫字母開頭。
結構體成員名詞,首單詞以小寫字母開頭,后續單詞以大寫字母開頭。
展開 RP 系列 | RP Resonator 和 RP Coating 的定制形式
RP系列 | 編輯器功能 | 語法高亮顯示、參數幫助、語法檢查、自動代碼重新格式化
RP Fiber Power 超短脈沖的數值表示
RP 系列 | 命名空間:避免名稱沖突的一種好方法
RP Fiber Power 光纖中基于模態或數值光束傳播的光場傳播
RP Fiber Power 在數值光束傳播中創建多模光束
RP Fiber Power 無源光纖之多模光纖
RP Fiber Power 無源光纖之單模光纖
RP Fiber Power 無源光纖之玻璃光纖
RP Fiber Power 無源光纖之光纖模式
請點擊??
RP Fiber Power 光纖激光器及光纖器件設計軟件|全面解析
RP Resonator 激光諧振腔設計軟件|全面解析
RP Coating 設計光學多層結構軟件|全面解析
RP ProPulse 脈沖傳輸模擬|全面解析
RP Q-switch 調Q激光器|全面解析
RP Fiber Calculator RP光纖計算器|全面解析
查看以上軟件
RP 激光軟件交流QQ群:302099202
光學軟件供應 軟件定制開發
光學軟件培訓 光學解決方案
光學儀器設備 光學鏡頭設計
高校輔助教學方案 BSDF測量
衍射光學元件設計開發
-------------------------------
電話:18696118912
郵箱:market@asdoptics.com
網址:www.asdoptics.com
展開 openFoam測試代碼文件
#include "IOstreams.H"//IOstreams結合了輸入輸出流等頭文件
#include "OSspecific.H"
using namespace Foam;//使用Foam的命名空間
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Main program:
int main()
{
wordList wrdList(5);//創建wrdList對象,可由char和string等類型構造
wrdList[0] = "hello";
wrdList[1] = "hello1";
wrdList[2] = "hello2";
wrdList[3] = "hello3";
wrdList[4] = "hello4.hmm";
fileName pathName(wrdList);//由word列表對象,構造創建pathName對象,為文件路徑和名字
Info<< "pathName = " << pathName << nl//輸出文件路徑
<< "pathName.name() = >" << pathName.name() << "<\n"//輸出pathName對象的文件名
<< "pathName.path() = " << pathName.path() << nl//輸出pathName對象的路徑
<< "pathName.ext() = >" << pathName.ext() << "<\n"//輸出文件名的后綴
<< "pathName.name(true)
展開 
PX4-7-飛控參數
.) \
APPLY_ALL(_DEFINE_SINGLE_PARAMETER, __VA_ARGS__) \
_DEFINE_PARAMETER_UPDATE_METHOD(__VA_ARGS__)
從內容我們可以大致了解,這里使用命名空間 do_not_explicitly_use_this_namespace中參數類定義參數變量,并且定義了應用中所有參數的更新類updateParamsImpl,這個函數在上一部分的ModuleParams::updateParams()中調用,里面的實現為
class ModuleParams
{
virtual void updateParams()
{
for (const auto &child : _children) {
child->updateParams();
}
updateParamsImpl();
}
}
在參數更新時,使用STRIP(x).update() 方法更新應用中每個使用到的參數,這個方法定義在do_not_explicitly_use_this_namespace中:
bool update()
{
int32_t value_int;
int ret = param_get(handle(), &value_int);
if (ret == 0) {
_val = value_int != 0;
return true;
}
return false;
}
這些宏定義中值得注意的是APPLY_ALL()方法,這個宏定義使代碼中展開復雜的結構,為應用的頭文件中定義的所有變量展開變量定義和update()方法,其目的是使代碼更加簡潔。
展開 SimulationX 統一多領域建模與仿真軟件
這是由SimulationX清晰的結構命名空間所保證的,它支持任意深層次結構模型的實施。
SimulationX提供:
幾種分析可能性,結合在一個統一的環境下并且所有都適用于同一個模型。
時域內的仿真使用優化的DAE求解器解決指數大于1的微分方程以及稀疏矩陣求解方法靜態計算(靜態或穩定),計算本征頻率和模態離散變量和零函數以解決不連續的問題。
您可以通過優化模塊來評估最優參數(參數確定,反向仿真),其可以與ITI SimulationX模型進行緊密的互動。通過拖放,SimulationX執行優化任務的便利性得到了體現。您可以組合不同的優化標準并且給予權重。
python Web開發:測試驅動方法PDF高清文檔下載
10.5.2 重定向時使用get_absolute_url 177
第11章 簡單的表單 181
11.1 把驗證邏輯移到表單中 181
11.1.1 使用單元測試探索表單API 182
11.1.2 換用Django中的ModelForm類 183
11.1.3 測試和定制表單驗證 184
11.2 在視圖中使用這個表單 186
11.2.1 在處理GET請求的視圖中使用這個表單 187
11.2.2 大量查找和替換 189
11.3 在處理POST請求的視圖中使用這個表單 191
11.3.1 修改new_list視圖的單元測試 191
11.3.2 在視圖中使用這個表單 192
11.3.3 使用這個表單在模板中顯示錯誤消息 193
11.4 在其他視圖中使用這個表單 194
11.5 使用表單自帶的save方法 196
第12章 高級表單 199
12.1 針對重復待辦事項的功能測試 199
12.1.1 在模型層禁止重復 200
12.1.2 題外話:查詢集合排序和字符串表示形式 202
12.1.3 重寫舊模型測試 204
12.1.4 保存時確實會顯示完整性錯誤 205
12.2 在視圖層試驗待辦事項重復驗證 206
12.3 處理唯一性驗證的復雜表單 207
12.4 在清單視圖中使用ExistingListItemForm 209
第13章 試探JavaScript 213
13.1 從功能測試開始 213
13.2 安裝一個基本的JavaScript 測試運行程序 214
13.3 使用jQuery 和<div>固件元素 217
13.4 為想要實現的功能編寫JavaScript單元測試 219
13.5 JavaScript測試在TDD循環中的位置 221
13.6 經驗做法:onload樣板代碼和命名空間
展開 SimulationX
你能夠深入了解: SimulationX清晰的結構化命名空間概念,支持執行任意深層次的模型,使您可以深入了解各個模型層次中的對象、參數和變量。
系統仿真
SimulationX 為整體設計支持邁出了非常重要的一步。有別于1D力學、控制系統、流體力學和氣動力學中使用的傳統元件,SimulationX使你可以利用電子工程、電子學、熱學、熱力學和3D力學等學科領域內的大約850個新的元件中創建你自己的模型。
● 電子工程:電阻,電容,電感,開關,二級管,晶體管,場效應管,線路傳輸模型等。
● 力學:阻抗(空氣,氣壓),轉換器, 渦淪等。
● 熱體力學:熱交流,蒸流器,壓縮機,幻想氣體和真實氣體,多相體,混合體等。
● 多體系統:剛體, CAD輸入,連接,載荷,彈簧等。
● 功能強大的COMPONENT接口為 把SimulationX集成到復雜設計過程,******了廣泛的可能性。 使用您所選擇的程式設計語言(Visual Basic, C, Java),您可以創建用戶化腳本,可與其他工具,如前后處理軟件,學科******軟件等進行數據交互。在安裝CD里,******了 一些入門應用例子供參考。
● 基于SimulationX 的通用耦合模塊,您可以用簡單易懂的方式,創建與其他仿真工具進行學科仿真的接口。
● 通過STL接口,可以輸入您在常用的CAD軟件工具中建立的所有的幾何模型。
高效計算
SimulationX 提供了:
● 分析在一個統一的環境。
● 在時域內的仿真,采用最優化的DAE求解器,和稀疏矩陣的方法更加高效。
● 平衡計算(瞬態或穩態),特征頻率計算和模塊計算。
● 采用離散數學和零函數學處理間斷點。
● 使用最優化工具來求解最優參數(參數識別,逆向仿真)。
展開