Swift: Extending functionality of print() function Swift: Extending functionality of print() function swift swift

Swift: Extending functionality of print() function


You can overshadow the print method from the standard library:

public func print(items: Any..., separator: String = " ", terminator: String = "\n") {    let output = items.map { "*\($0)" }.joined(separator: separator)    Swift.print(output, terminator: terminator)}

Since the original function is in the standard library, its fully qualified name is Swift.print


This code working for me in swift 3

import Foundationpublic func print(_ items: Any..., separator: String = " ", terminator: String = "\n") {    let output = items.map { "\($0)" }.joined(separator: separator)    Swift.print(output, terminator: terminator)}class YourViewController: UIViewController {}


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 :)