代码之家  ›  专栏  ›  技术社区  ›  Eibo

如何通过引用传递给不接受新参数的函数?

  •  -1
  • Eibo  · 技术社区  · 8 年前

    我需要修改名为 test 在…内 process_data 并根据 价值

    我无法通过引用传递 upvar 因为 处理_数据 表示用于处理接收到的udp数据包的静态函数,它不会接受两个以上的参数“大小和数据”。
    此外,据我所知,没有为 处理_数据 作用

    代码:

    set test "0"
    
    Agent/UDP instproc process_data {size data} {
         //some stuff
         if (...)
            set test "1"
    }
    
    // switch cases depending on test value.
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Peter Lewerin    8 年前

    你不需要额外的参数来使用 upvar 如果您知道要别名的变量的名称。你应该能够做到以下任何一项(做 使用两者):

    global test
    upvar #0 test test
    

    这不是真正的经典模块化编程,但它会工作。

    放置命令的好地方是在程序体的开头,如下所示:

    Agent/UDP instproc process_data {size data} {
        global test
        # some stuff
    }
    

    如果您使用 upvar #0 test test (这两个命令基本上是等效的)。

    文档: global , upvar