当前位置: 首页 > 面试题库 >

选择全局或对象打印功能

华锦程
2023-03-14
问题内容

我正在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")


 类似资料:
  • 使用 Photoshop,您可以打印任何兼容的 3D 模型,而无需担心 3D 打印机的限制。在准备打印时,Photoshop 会自动使 3D 模型防水。Photoshop 还会生成必要的支撑结构(支架和底座),以确保您的 3D 打印能够成功完成。 准备打印 3D 对象 选择“窗口”>“工作区”>“3D”以切换到 3D 工作区。 在 Photoshop 中打开 3D 模型。如果需要,请在打开 3D

  • 问题内容: 如果存储在db中的user_choices值为1,如何打印对应的user_choices对应值(即1 == GOOD) 问题答案:

  • 全局对象提供可在任何地方使用的变量和函数。默认情况下,这些全局变量内置于语言或环境中。 在浏览器中,它的名字是 “window”,对 Node.js 而言,它的名字是 “global”,其它环境可能用的是别的名字。 最近,globalThis 被作为全局对象的标准名称加入到了 JavaScript 中,所有环境都应该支持该名称。所有主流浏览器都支持它。 假设我们的环境是浏览器,我们将在这儿使用 “

  • 主要内容:全局对象与全局变量,__filename,__dirname,setTimeout(cb ms),clearTimeout(t),setInterval(cb ms),console,processJavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 globa

  • JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性。 在 Node.js 我们可以直接访问到 global 的属性

  • 用于选择对象的选项 在可以修改某个对象之前,需要将其与周围的对象区分开来。只需选择对象,即可加以区分。只要选择了对象或者对象的一部分,即可对其进行编辑。 Illustrator 提供以下选择方法和工具: 隔离模式可让您快速将一个图层、子图层、路径或一组对象与文档中的其他所有图稿隔离开来。在隔离模式下,文档中所有未隔离的对象都会变暗,并且不可对其进行选择或编辑。 图层面板可让您快速而准确地选择单个或