Swift: 无法将数组置为 nil
Swift: Cannot put an array to nil
我想做的是,有一个数组变量,每当它被调用时都会被初始化。为此,我在声明它时使用了 lazy
关键字。
但是,我有一个清晰的方法,我想在其中清除数组的内容(在 恒定的时间复杂度 中),为此我对数组执行 nil。这给了我一个错误:Cannot assign a value of type NilLiteralConvertible to a value of type [Int]
。我该如何解决?
class Array
{
lazy var elementsInArray = [Int]()
func add(element: Int) {
elementsInArray.append(element)
}
func clear() {
elementsInArray = nil
}
}
有一个方法:
class Array
{
lazy var elementsInArray = [Int]()
func add(element: Int) {
elementsInArray.append(element)
}
func clear() {
elementsInArray.removeAll() //use this.
}
}
要分配任何变量 nil
,它应该被声明为可选的。 Int
不同于可选的 Int?
。同样,[Int]
数组不同于可选的 [Int]?
数组
class Array
{
lazy var elementsInArray:[Int]? = [Int]()
func add(element: Int) {
elementsInArray!.append(element)
}
func clear() {
elementsInArray = nil
}
}
所以你应该像上面那样改变它,为Array中的元素分配nil值。
elementsInArray = []
和 elementsInArray.removeAll()
一样有效
这只是将一个空数组分配给变量。
所以,最后我为让它工作所做的是:
class Array {
private var _elementsInArray:[Int]?
var elementsInArray:[Int]? {
get {
// If while accessing, this array is nil, initiate it with an empty array
if _elementsInArray == nil {
_elementsInArray = [Int]()
}
return _elementsInArray
}
set {
_elementsInArray = newValue
}
}
func add(element: Int) {
elementsInArray?.append(element)
}
func clear() {
elementsInArray = nil
}
}
非常感谢@PrajeetShrestha 和@Thilo 帮助我。
我想做的是,有一个数组变量,每当它被调用时都会被初始化。为此,我在声明它时使用了 lazy
关键字。
但是,我有一个清晰的方法,我想在其中清除数组的内容(在 恒定的时间复杂度 中),为此我对数组执行 nil。这给了我一个错误:Cannot assign a value of type NilLiteralConvertible to a value of type [Int]
。我该如何解决?
class Array
{
lazy var elementsInArray = [Int]()
func add(element: Int) {
elementsInArray.append(element)
}
func clear() {
elementsInArray = nil
}
}
有一个方法:
class Array
{
lazy var elementsInArray = [Int]()
func add(element: Int) {
elementsInArray.append(element)
}
func clear() {
elementsInArray.removeAll() //use this.
}
}
要分配任何变量 nil
,它应该被声明为可选的。 Int
不同于可选的 Int?
。同样,[Int]
数组不同于可选的 [Int]?
数组
class Array
{
lazy var elementsInArray:[Int]? = [Int]()
func add(element: Int) {
elementsInArray!.append(element)
}
func clear() {
elementsInArray = nil
}
}
所以你应该像上面那样改变它,为Array中的元素分配nil值。
elementsInArray = []
和 elementsInArray.removeAll()
这只是将一个空数组分配给变量。
所以,最后我为让它工作所做的是:
class Array {
private var _elementsInArray:[Int]?
var elementsInArray:[Int]? {
get {
// If while accessing, this array is nil, initiate it with an empty array
if _elementsInArray == nil {
_elementsInArray = [Int]()
}
return _elementsInArray
}
set {
_elementsInArray = newValue
}
}
func add(element: Int) {
elementsInArray?.append(element)
}
func clear() {
elementsInArray = nil
}
}
非常感谢@PrajeetShrestha 和@Thilo 帮助我。