gpt4 book ai didi

cocoa - 使 NSNull 符合 NilLiteralConvertible

转载 作者:行者123 更新时间:2023-11-28 07:14:38 25 4
gpt4 key购买 nike

我试图让 NSNull 符合 NilLiteralConvertible,但我遇到了很多挫折:

extension NSNull : NilLiteralConvertible{

required convenience init(nilLiteral: ()){
self.init()
}
}

首先,我不得不让 init 成为一个 convenience ,因为我不能在扩展中添加指定的初始化程序。

然后,编译器发疯了,坚持必须让 init 成为required,然后立即提示说 required 初始化器必须直接添加到类中,而不是在类中扩大。什么鬼?!

playground

有人知道发生了什么以及如何使 NSNull 符合这个简单的协议(protocol)吗?

我正在 Xcode playground 中对此进行测试。

最佳答案

应该没有理由符合NSNullNilLiteralConvertible .尽管该协议(protocol)是公开的,但它主要由 NSZone 在内部使用以及 Optionals 在该语言中的实现(参见源代码中的引用资料 here)。您只需将变量声明为 Optional<NSNull> 即可获得所需的行为。 . Optional枚举符合 NilLiteralConvertible对你来说,如 Optional.swift 的来源所示:

这行不通:

var null: NSNull

null = NSNull() // <null>
null = nil // error: nil cannot be assigned to type 'NSNull'

但是这样做:

var null: NSNull?

null = NSNull() // <null>
null = nil // nil

关于cocoa - 使 NSNull 符合 NilLiteralConvertible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26822192/

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