你能在proc中获得"proc名称"吗?

Sco*_*ter 4 tcl

在一个proc中你可以得到proc名称(没有硬编码)?例如

proc my_proc { some_arg } {
    puts "entering proc [some way of getting proc name]"
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*nte 11

当然可以!

使用info level命令:

proc my_proc { some_arg } {
    puts "entering proc [lindex [info level 0] 0]"
}
Run Code Online (Sandbox Code Playgroud)

而你得到了你想要的

entering proc my_proc
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用info frame,它给出一个包含其他信息的字典,并读取proc密钥:

proc my_proc { some_arg } {
    puts "entering proc [dict get [info frame 0] proc]"
}
Run Code Online (Sandbox Code Playgroud)

这一次,你将获得完全合格的proc名称:

entering proc ::my_proc
Run Code Online (Sandbox Code Playgroud)

  • 那应该是`[lindex [info level 0] 0]`,因为`info level 0`返回一个列表,其中包含当前proc的名称**和参数**. (3认同)
  • `info level 0`可以获得有关__ asled的信息,`info frame 0`可以获得有关它_is_的信息.这两者通常密切相关,但并不总是...... (2认同)