首页 > 技术文章 > Swift自定义(可变参)打印函数

liuyongfa 2018-08-22 17:48 原文

    /// 单参数打印函数
    ///
    /// - Parameters:
    ///   - message:打印
    ///   - file: 文件名,默认值:#file
    ///   - line: 第几行,默认值:#line
    ///   - method: 函数名,默认值:#function
    func printLog(_ message: Any,
                  file: String = #file,
                  line: Int = #line,
                  method: String = #function)
    {
        #if DEBUG
        print("\((file as NSString).lastPathComponent)[\(line)], \(method): \(message)")
        #endif
    }
    //调用
    let a = 2
    printLog(a)
    //打印结果:ViewController.swift[59], printLog(): 2
    
    
    /// 可变参打印函数
    ///
    /// - Parameters:
    ///   - items: Zero or more items to print.
    ///   - separator: A string to print between each item. The default is a single space (`" "`).
    ///   - terminator: The string to print after all items have been printed. The  default is a newline (`"\n"`).
    ///   - file: 文件名,默认值:#file
    ///   - line: 第几行,默认值:#line
    ///   - method: 函数名,默认值:#function
    func printLog(_ items: Any...,
        separator: String = " ",
        terminator: String = "\n",
        file: String = #file,
        line: Int = #line,
        method: String = #function)
    {
        #if DEBUG
        //如果不怕打印结果有大括号[4, "abc", [1, 2, 3]],可以直接一句话
        //print("\((file as NSString).lastPathComponent)[\(line)], \(method):", items)
        print("\((file as NSString).lastPathComponent)[\(line)], \(method):", terminator: separator)
        var i = 0
        let j = items.count
        for a in items {
            i += 1
            print(a, terminator:i == j ? terminator: separator)
        }
        #endif
    }
    //调用
    printLog(4, "abc", [1,2,3])
    //打印结果:ViewController.swift[89], printLog(): 4 abc [1, 2, 3]

 

推荐阅读