1
我們是否可以重命名構造函數,如使用%rename指令重命名函數?SWIG TCL:將類構造函數名稱從new_ *重命名爲create_ *
%rename(create_cell) Cell(string);
基本上,我想要的東西,如create_cell
而不是new_Cell
結束了。
我們是否可以重命名構造函數,如使用%rename指令重命名函數?SWIG TCL:將類構造函數名稱從new_ *重命名爲create_ *
%rename(create_cell) Cell(string);
基本上,我想要的東西,如create_cell
而不是new_Cell
結束了。
我懷疑你不能在那個時候(你是否嘗試過看它是否有效?),但是你可以做一些事情。 (僅做他們中的一個,當然。)
"new_Cell"
是"create_cell"
。我認爲你應該能夠在參數中找到改變位置的地方,例如Tcl_CreateCommand或Tcl_CreateObjCommand
,但也可能在宏中,這取決於代碼生成的完成方式。 (我從來沒有真正看過。)使用load
將代碼獲取到Tcl中,然後rename
之後的命令。名字並不固定。 load
可能在執行package require
的調用中;只是做你通常會做的就是代碼錯誤的名稱的工作,然後再做到這一點:
rename new_Cell create_cell
添加一個包裝命令或程序;他們都會讓你做的事:
proc create_cell args {
eval new_Cell $args
}
# With 8.5 or later
proc create_cell args {
new_Cell {*}$args
}
# With 8.6
proc create_cell args {
tailcall new_Cell {*}$args
}
# Or do this; not a procedure, an alias
interp alias {} create_cell {} new_Cell
如果您使用的包裝或別名,你也可以使用'rename'對包裝'new_Cell'移動到另一個Tcl命名空間,它不會干擾你所看到的東西。純粹的化妝品,但方便。 (我自己,我會包裝一切,因爲我不太喜歡SWIG生成的界面風格; Tcl _isn't_ C++和它的API有它自己的味道。) – 2012-04-04 07:07:32
謝謝Donal,我想我會重命名proc是TCL 。這似乎是最簡單的事情。 – 2012-04-04 15:39:34