gpt4 book ai didi

swift - 在 Swift 中访问 "level"范围以获得更有意义的调试字符串

转载 作者:行者123 更新时间:2023-11-28 13:50:33 25 4
gpt4 key购买 nike

我正在寻找一种方法来动态确定代码正在执行的范围“级别”。

例如,如果类 z 具有函数 x 和 y:

如果函数 x 被类 z 调用,打印语句将与从函数 y 中调用或从函数 y 中的函数中调用相同。

我想在每个“级别”的范围内包含额外的空格,这样当我打印以指示正在调用一个函数时,它会打印出比调用它的代码多一个制表符的缩进。为此,我需要以某种方式确定范围的“级别”。我可以手动执行此操作,但这会比它可能值得的更痛苦。

Swift 会在我可以访问的任何地方自动执行此操作吗?

编辑我刚刚意识到,从技术上讲,我正在寻找的可能不是范围的“级别”,而是“被调用函数”的“级别”。就像,我想要一个值,对于函数开始的每个“{”+= 1,对于函数结束的每个“}”-= 1,如果这有意义的话,所以我可以将“\t”乘以那个值并将结果放在该功能 block 中所有打印语句的开头。

最佳答案

我认为没有任何内置机制可以满足您的需求。您可以加载堆栈跟踪并从中构建您想要的内容,但这将是一项相当大的工作量。

或者,您可以创建一个静态变量 callDepth,在每个函数的入口处递增它,并在每个函数结束时递减它(或在每个函数开头定义的延迟 block 中)所以即使你在函数的不同地方有 return 语句,它也能工作。)

然后您可以使用 callDepth 变量来确定在记录函数数据时使用多少个选项卡。

关于swift - 在 Swift 中访问 "level"范围以获得更有意义的调试字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54681906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com