加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift中的访问/打印/日志变量名称

发布时间:2020-12-14 04:31:39 所属栏目:百科 来源:网络整理
导读:我在这个主题上阅读的大部分内容让我相信目前这是不可能的,但我很好奇是否有人知道如何在 Swift中打印变量的实际名称. 我的用例专门用于调试/记录,以帮助准确地跟踪保护语句中的错误源.我希望我不需要手动传入一个字符串,只能在函数签名中有一个默认参数.此
我在这个主题上阅读的大部分内容让我相信目前这是不可能的,但我很好奇是否有人知道如何在 Swift中打印变量的实际名称.

我的用例专门用于调试/记录,以帮助准确地跟踪保护语句中的错误源.我希望我不需要手动传入一个字符串,只能在函数签名中有一个默认参数.此外,由于守护语句是一种常见的Swift约定,对于我自己和其他可能做类似这样的事情,这可能比每次执行此操作时节省大量时间并且更可靠…

或多或少我正在考虑的是 – 以及我可能会在guarded()函数中使用#file,#line等其他信息

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"

很想看看你是否有任何超出人工努力的想法.谢谢!

解决方法

你不能.变量名是一种抽象,严格来说是程序员.编译器只处理寄存器和内存地址.为了使这样的事情起作用,它需要是一个明确的语言特征,它(当前)不是

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读