1

我们可以像使用 %rename 指令重命名函数一样重命名构造函数吗?

%rename(create_cell) Cell(string);

基本上,我想最终得到类似create_cell而不是new_Cell.

4

1 回答 1

0

我怀疑你不能在这一点上(你试过看看它是否有效?)但你可以做一些事情。(当然,只做其中之一。)

  1. 编辑生成的代码(SWIG 编写 C++–Tcl 绑定代码,然后编译),使字符串"new_Cell""create_cell". 我认为您应该能够找到更改参数的位置,例如 Tcl_CreateCommand 或 函数调用Tcl_CreateObjCommand,但也可能在宏中,具体取决于代码生成的完成方式。(我从来没有真正看过。)
  2. 用于load将代码输入 Tcl,然后rename输入命令。名字不是一成不变的。load 可能在调用的实现内部package require;只需执行您通常会首先使用错误名称的代码,然后执行以下操作:

    rename new_Cell create_cell
    
  3. 添加包装命令或过程;这些中的任何一个都可以:

    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
    
于 2012-04-04T07:04:30.380 回答