【发布时间】:2012-04-04 06:31:34
【问题描述】:
我们可以像使用 %rename 指令重命名函数一样重命名构造函数吗?
%rename(create_cell) Cell(string);
基本上,我想以create_cell 之类的方式结束,而不是new_Cell。
【问题讨论】:
我们可以像使用 %rename 指令重命名函数一样重命名构造函数吗?
%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 不是 C++,它的 API 有自己的风格。)