Swift:扩展print()函数的功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift:扩展print()函数的功能相关的知识,希望对你有一定的参考价值。

是否可以扩展Swift功能的功能?我想在我的程序中的每个print()函数上添加一个字符,而不必创建一个全新的函数并重命名print()的每个实例。是否可以创建一个在每个打印实例上附加'*'的扩展名?

这样做的目的是创建一种清除XCODE添加到调试器中的所有额外信息的方法。我使用print语句检查代码的不同部分的进度和成功,但XCODE在几秒钟内填写了数千行超额信息,很快就掩盖了我的具体陈述。

我想做的事:

print("Hello world!")
//Sudo code:
Extension print(text: String) {
    let newText = "*(text)"
    return newText
}

输出:* Hello World!

然后我将过滤星号的Xcode调试输出。我一直在手动这样做

答案

您可以从标准库中掩盖print方法:

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

由于原始函数位于标准库中,因此其完全限定名称为Swift.print

另一答案

这段代码在swift 3中为我工作

import Foundation

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

class YourViewController: UIViewController {
}

以上是关于Swift:扩展print()函数的功能的主要内容,如果未能解决你的问题,请参考以下文章

Swift6-函数

Swift 学习- 07 -- 函数

Swift 官方文档中文版: 函数

装饰器

装饰器

Python面向对象学习之八,装饰器