gpt4 book ai didi

swift - 在 Swift 中访问/打印/记录变量名称

转载 作者:搜寻专家 更新时间:2023-10-31 19:37:19 25 4
gpt4 key购买 nike

我阅读的关于这个主题的大部分内容让我相信目前这是不可能的,但我很好奇是否有人知道如何在 Swift 中打印变量的实际名称。

我这里的用例专门用于调试/日志记录目的,以帮助准确跟踪 guard 语句中的错误源。我希望我不需要手动传入一个字符串,并且可以在函数签名中有一个默认参数。此外,由于 guard 语句是一种常见的 Swift 约定,对于我自己和其他可能做类似事情的人来说,这可能会节省大量时间,并且比每次实现时手动输入更可靠......

或多或少我在想什么——另外我可能会在 guarded() 函数

extension Optional {
func guarded(variableName: String = #variableName, caller: String = #function) -> Optional {
if self == nil {
log.warning(message: "Guard statement failed to unwrap variable: \(variableName) in function: \(function)")
}
return self
}
}

这在这种情况下会很有用:

func sampleFunction(_ funkyVariable: String?, boringVariable: String?) {
guard let funkyVariable = funkyVariable.guarded(), let boringVariable = boringVariable.guarded() else {
// Custom handling of else condition if necessary
return
}

print("\(funkyVariable) and \(boringVariable) aren't nil!")
}

然后,当它被调用时:

sampleFunction(funkyVariable: "string", boringVariable: nil) 
// Results in logger message: "Guard statement failed to unwrap variable: boringVariable in function: sampleFunction"

很想看看您是否有任何超越手动操作的想法。谢谢!

最佳答案

你不能。变量名是一种抽象,仅供程序员使用。编译器只处理寄存器和内存地址。为了让这样的东西起作用,它需要是一个明确的语言特性,而它(目前)不是

关于swift - 在 Swift 中访问/打印/记录变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41497369/

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