How to?

尾调用同级的树形图

Jun 23, 2026
2606
2 Minutes
278 Words
1
展示函数调用链. 使用尾调用同级的树形图,即每行一个函数,不重要子函数可省略,并且一个函数的子函数中的最后一个与父函数必须处于同一缩进,其他缩进 + 1
2
f
3
├── f 的第一个子函数
4
│ 如果 f 只有一个要展示的子函数就这样画
5
├── ...
6
f 的最后一个子函数 g
7
├── g 的第一个子函数
8
g 的最后一个子函数

对比一下使用了尾调用同级的:

1
std.debug.print()
2
├── std.debug.lockStderr()
3
│ ├── Io.lockStderr()
4
│ │ ├── Threaded.lockStderr()
5
│ │ Threaded.initLockedStderr()
6
Io.LockedStderr.clear()
7
├── Io.Writer.print()
8
│ ├── Io.Writer.writeAll()
9
│ │ Io.Writer.write()
10
Io.Writer.printValue()
11
Io.Writer.writeAll()
12
std.debug.unlockStderr()
13
├── Io.unlockStderr()
14
Threaded.unlockStderr()
15
├── Io.Writer.flush()
9 collapsed lines
16
Writer.defaultFlush()
17
File.Writer.drain()
18
File.Writer.drainStreaming()
19
File.writeStreaming()
20
Io.operate()
21
Threaded.operate()
22
Threaded.fileWriteStreaming()
23
posix.system.writev() # 这里调用 macos 平台函数
24
mutexUnlock()

不使用:

1
std.debug.print()
2
├── std.debug.lockStderr()
3
│ ├── Io.lockStderr()
4
│ │ ├── Threaded.lockStderr()
5
│ │ └── Threaded.initLockedStderr()
6
│ └── Io.LockedStderr.clear()
7
├── Io.Writer.print()
8
│ ├── Io.Writer.writeAll()
9
│ │ └── Io.Writer.write()
10
│ └── Io.Writer.printValue()
11
│ └── Io.Writer.writeAll()
12
└── std.debug.unlockStderr()
13
├── Io.unlockStderr()
14
└── Threaded.unlockStderr()
15
├── Io.Writer.flush()
9 collapsed lines
16
│ └── Writer.defaultFlush()
17
│ └── File.Writer.drain()
18
│ └── File.Writer.drainStreaming()
19
│ └── File.writeStreaming()
20
│ └── Io.operate()
21
│ └── Threaded.operate()
22
│ └── Threaded.fileWriteStreaming()
23
│ └── posix.system.writev() # 这里调用 macos 平台函数
24
└── mutexUnlock()
Article title:尾调用同级的树形图
Article author:Julyfun
Release time:Jun 23, 2026
Copyright 2026
Sitemap