gpt4 book ai didi

swift - 选择全局或对象打印功能

转载 作者:可可西里 更新时间:2023-10-31 23:56:05 25 4
gpt4 key购买 nike

我正在使用 Swift 开发一个 Cocoa 项目,遇到了以下问题:

Cocoa Framework 中的几个类(例如 NSWindowNSView)实现了一个名为 print: 的函数,它打开一个窗口以便打印一些东西(真的不知道是什么),所以当我在从这些类之一继承的类中工作时,并想将一些东西记录到控制台以进行调试,我使用 print: 函数.但是编译器认为我指的是 self.print:,尽管我指的是全局打印函数。

我通过像这样声明一个全局函数找到了一个解决方法:

func myPrint(o : Any?)
{
print(o)
}

并在编译器混淆我指的是哪个函数的情况下使用myPrint: 而不是print:。我很确定在这种情况下,除了 print: 之外,可能还有其他功能。我的解决方法或覆盖继承的 print: 函数是唯一的解决方案,还是我可以以某种方式给编译器一个提示,说我想引用全局 print: 函数?

PS: 我使用的是 Swift 2.0,所以 println: 不可用。

最佳答案

确实,NSView 有一个

func print(_ sender: AnyObject?)

打开打印面板的方法,这是一个不幸的巧合。

您的 myPrint() 包装器有一些限制,例如

myPrint("b", appendNewline : false)

不编译。更好的实现方式是

func myPrint<T>(o : T, appendNewline nl: Bool = true) {
print(o, appendNewline: nl)
}

但是您可以简单地在模块名称前面加上“Swift”来显式引用全局函数:

Swift.print("xxx")

关于swift - 选择全局或对象打印功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30955889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com