Swift: Extending functionality of print() function

前端 未结 3 746
甜味超标
甜味超标 2020-12-09 05:01

Is it possible to extend the functionality of a Swift function? I would like appnd a single character onto every print() function in my program without having to create a br

3条回答
  •  南方客
    南方客 (楼主)
    2020-12-09 05:28

    If we want to cover all cases with custom print we should create new file for example: CustomPrint.swift and then paste this two methods:

    SWIFT 5.1

    First (according to ThomasHaz answer)

    public func print(_ items: String..., filename: String = #file, function : String = #function, line: Int = #line, separator: String = " ", terminator: String = "\n") {
        #if DEBUG
            let pretty = "\(URL(fileURLWithPath: filename).lastPathComponent) [#\(line)] \(function)\n\t-> "
            let output = items.map { "\($0)" }.joined(separator: separator)
            Swift.print(pretty+output, terminator: terminator)
        #else
            Swift.print("RELEASE MODE")
        #endif
    }
    

    and second because the first one does't cover dictionary and array printing

    public func print(_ items: Any..., separator: String = " ", terminator: String = "\n") {
        #if DEBUG
            let output = items.map { "\($0)" }.joined(separator: separator)
            Swift.print(output, terminator: terminator)
        #else
            Swift.print("RELEASE MODE")
        #endif
    }
    

    Enjoy :)

提交回复
热议问题