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