Error[8]: Undefined offset: 6, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述有人能解释为什么这段代码会抛出错误吗? class Base {}class SubclassOfBase: Base {}let baseItems = [Base](count: 1, repeatedValue: Base())let subclassItems = [SubclassOfBase](count: 3, repeatedValue: SubclassOfBase()) 有人能解释为什么这段代码会抛出错误吗?

class Base {}class SubclassOfBase: Base {}let baseItems = [Base](count: 1,repeatedValue: Base())let subclassItems = [SubclassOfBase](count: 3,repeatedValue: SubclassOfBase())var items = [Base]()items.append(SubclassOfBase()) //OKitems.appendContentsOf(baseItems) //OKitems.appendContentsOf(subclassItems) //cannot invoke with argument of type [SubclassOfBase]items.append(subclassItems.first!) //OK

接下来的问题:添加子类元素的唯一方法是在for循环中逐个添加它们吗?

解决方法 如果您检查标题:

public mutating func append(newElement: Element)public mutating func appendContentsOf<C : CollectionType where C.Generator.Element == Element>(newElements: C)

请注意类型说明符的不同之处.虽然append允许您添加任何元素,即包括子类,但appendContentsOf强制您使用具有完全相同元素类型的数组(不允许子类).

它适用于:

let subclassItems = [Base](count: 3,repeatedValue: SubclassOfBase())

我认为这是一个错误,因为这可以通过改进函数头很容易解决(好吧,这也需要扩展到where子句,因为现在检测通用子类型是不可能的).

一些可能的解决方法:

>直接附加每个项目

subclassItems.forEach {items.append(
extension Array {    public mutating func appendContentsOf(newElements: [Element]) {        newElements.forEach {            self.append(
items.appendContentsOf(subclassItems as [Base])
) } }}
)}

>为Arrays声明一个辅助方法(适用于Array,不适用于通用CollectionType)

[+++]

>直接演员

[+++] 总结

以上是内存溢出为你收集整理的数组 – [SuperClass]类型的Swift数组,其元素类型为[Subclass]全部内容,希望文章能够帮你解决数组 – [SuperClass]类型的Swift数组,其元素类型为[Subclass]所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 7, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述有人能解释为什么这段代码会抛出错误吗? class Base {}class SubclassOfBase: Base {}let baseItems = [Base](count: 1, repeatedValue: Base())let subclassItems = [SubclassOfBase](count: 3, repeatedValue: SubclassOfBase()) 有人能解释为什么这段代码会抛出错误吗?

class Base {}class SubclassOfBase: Base {}let baseItems = [Base](count: 1,repeatedValue: Base())let subclassItems = [SubclassOfBase](count: 3,repeatedValue: SubclassOfBase())var items = [Base]()items.append(SubclassOfBase()) //OKitems.appendContentsOf(baseItems) //OKitems.appendContentsOf(subclassItems) //cannot invoke with argument of type [SubclassOfBase]items.append(subclassItems.first!) //OK

接下来的问题:添加子类元素的唯一方法是在for循环中逐个添加它们吗?

解决方法 如果您检查标题:

public mutating func append(newElement: Element)public mutating func appendContentsOf<C : CollectionType where C.Generator.Element == Element>(newElements: C)

请注意类型说明符的不同之处.虽然append允许您添加任何元素,即包括子类,但appendContentsOf强制您使用具有完全相同元素类型的数组(不允许子类).

它适用于:

let subclassItems = [Base](count: 3,repeatedValue: SubclassOfBase())

我认为这是一个错误,因为这可以通过改进函数头很容易解决(好吧,这也需要扩展到where子句,因为现在检测通用子类型是不可能的).

一些可能的解决方法:

>直接附加每个项目

subclassItems.forEach {items.append(
extension Array {    public mutating func appendContentsOf(newElements: [Element]) {        newElements.forEach {            self.append(
items.appendContentsOf(subclassItems as [Base])
) } }}
)}

>为Arrays声明一个辅助方法(适用于Array,不适用于通用CollectionType)

>直接演员

[+++] 总结

以上是内存溢出为你收集整理的数组 – [SuperClass]类型的Swift数组,其元素类型为[Subclass]全部内容,希望文章能够帮你解决数组 – [SuperClass]类型的Swift数组,其元素类型为[Subclass]所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
数组 – [SuperClass]类型的Swift数组,其元素类型为[Subclass]_app_内存溢出

数组 – [SuperClass]类型的Swift数组,其元素类型为[Subclass]

数组 – [SuperClass]类型的Swift数组,其元素类型为[Subclass],第1张

概述有人能解释为什么这段代码会抛出错误吗? class Base {}class SubclassOfBase: Base {}let baseItems = [Base](count: 1, repeatedValue: Base())let subclassItems = [SubclassOfBase](count: 3, repeatedValue: SubclassOfBase()) 有人能解释为什么这段代码会抛出错误吗?

class Base {}class SubclassOfBase: Base {}let baseItems = [Base](count: 1,repeatedValue: Base())let subclassItems = [SubclassOfBase](count: 3,repeatedValue: SubclassOfBase())var items = [Base]()items.append(SubclassOfBase()) //OKitems.appendContentsOf(baseItems) //OKitems.appendContentsOf(subclassItems) //cannot invoke with argument of type [SubclassOfBase]items.append(subclassItems.first!) //OK

接下来的问题:添加子类元素的唯一方法是在for循环中逐个添加它们吗?

解决方法 如果您检查标题:

public mutating func append(newElement: Element)public mutating func appendContentsOf<C : CollectionType where C.Generator.Element == Element>(newElements: C)

请注意类型说明符的不同之处.虽然append允许您添加任何元素,即包括子类,但appendContentsOf强制您使用具有完全相同元素类型的数组(不允许子类).

它适用于:

let subclassItems = [Base](count: 3,repeatedValue: SubclassOfBase())

我认为这是一个错误,因为这可以通过改进函数头很容易解决(好吧,这也需要扩展到where子句,因为现在检测通用子类型是不可能的).

一些可能的解决方法:

>直接附加每个项目

subclassItems.forEach {items.append(
extension Array {    public mutating func appendContentsOf(newElements: [Element]) {        newElements.forEach {            self.append(
items.appendContentsOf(subclassItems as [Base])
) } }}
)}

>为Arrays声明一个辅助方法(适用于Array,不适用于通用CollectionType)

>直接演员

总结

以上是内存溢出为你收集整理的数组 – [SuperClass]类型的Swift数组,其元素类型为[Subclass]全部内容,希望文章能够帮你解决数组 – [SuperClass]类型的Swift数组,其元素类型为[Subclass]所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1012057.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存