一尘不染

Swift中的宏?

swift

Swift当前是否支持宏,或者将来有计划添加支持吗?目前,我正在散布:

Log.trace(nil, function: __FUNCTION__, file: __FILE__, line: __LINE__)

在我的代码中的各个地方。


阅读 411

收藏
2020-07-07

共1个答案

一尘不染

在这种情况下,应为“宏”参数添加默认值。

Swift 2.2及更高版本

func log(message: String,
        function: String = #function,
            file: String = #file,
            line: Int = #line) {

     print("Message \"\(message)\" (File: \(file), Function: \(function), Line: \(line))")
}

log("Some message")

Swift 2.1及更低版本

func log(message: String,
        function: String = __FUNCTION__,
        file: String = __FILE__,
        line: Int = __LINE__) {

    print("Message \"\(message)\" (File: \(file.lastPathComponent), Function: \(function), Line: \(line))")
}

log("Some message")

这是fatalErrorassert功能做。

除了其他答案中已经提到的条件编译之外,没有其他宏。

2020-07-07