1

%rename ディレクティブを使用して関数の名前を変更するように、コンストラクターの名前を変更できますか?

%rename(create_cell) Cell(string);

create_cell基本的に、代わりに のようなものになりたいですnew_Cell

4

1 に答える 1

0

その時点ではできないと思いますが (動作するかどうか試してみましたか?)、できることがいくつかあります。(もちろん、そのうちの1つだけを実行してください。)

  1. 文字列"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 に答える