1展示函数调用链. 使用尾调用同级的树形图,即每行一个函数,不重要子函数可省略,并且一个函数的子函数中的最后一个与父函数必须处于同一缩进,其他缩进 + 12f3├── f 的第一个子函数4│ 如果 f 只有一个要展示的子函数就这样画5├── ...6f 的最后一个子函数 g7├── g 的第一个子函数8g 的最后一个子函数对比一下使用了尾调用同级的:
1std.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()12std.debug.unlockStderr()13├── Io.unlockStderr()14Threaded.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 平台函数24mutexUnlock()不使用:
1std.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()