Error[8]: Undefined offset: 5, 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(

概述我正在尝试将以下函数转换为2D数组的通用扩展. func rotate(_ input: [[Int]]) -> [[Int]]{ let length = input[0].count var value = Array(repeating: [Int](), count: length) for index in 0 ..< length { value[index] 我正在尝试将以下函数转换为2D数组的通用扩展.
func rotate(_ input: [[Int]]) -> [[Int]]{  let length = input[0].count  var value = Array(repeating: [Int](),count: length)  for index in 0 ..< length  {    value[index] = input.map { 
extension Array where Element: Collection,Element.Iterator.Element: Collection{  private func rotate()  {    let count = self[0].count // Element.Indexdistance instead of Int    // Expression type 'Array<Element>' is ambiguous without more context    var returnValue = Array(repeating: Element,count: 11)    for index in 0 ..< count // Element.Indexdistance instead of Int    {      returnValue[index] = self.map { 
extension Array where Element: Collection,Element.Index == Int,Element.Indexdistance == Int {    private func rotate() -> [[Element.Iterator.Element]] {        typealias InnerElement = Element.Iterator.Element        // in the case of an empty array,simply return an empty array        if self.isEmpty { return [] }         let length = self[0].count        var returnValue = [[InnerElement]](repeating: [InnerElement](),count: length)        for index in 0..<length {            returnValue[index] = self.map{ 
private func rotate() -> [[Element.Iterator.Element]] {    if self.isEmpty { return [] }    let length = self[0].count    return (0..<length).map { index in        self.map { 
extension Array where Element: Collection,Element.Indices.Iterator.Element == Element.Index {    private func rotate() -> [[Element.Iterator.Element]] {        if self.isEmpty { return [] }        return self[0].indices.map { index in            self.map { [+++][index] }.reversed()        }    }}
[index] }.reversed() }}
[index] }.reversed() } return returnValue }}
[index] }.reversed() } return returnValue }}
[index] }.reversed() } return value}

我特别难以指出如何指定约束以允许我访问第二个维度.这是一次失败的尝试:

[+++] 问题是编译器不知道你的扩展是用于2D数组 – 它只知道它是用于集合数组.因此,关联类型Indexdistance和Index不一定是Int.

因此,解决方案是约束您的扩展,以便Element的Indexdistance和Index属于Int类型.这将允许您形成范围0 ..< count,因为count现在将是Int(Indexdistance)类型 - 并且您将能够使用Ints下标地图(_ :)中的元素(因为下标需要指数). (一旦支持concrete same-type requirements,这将是微不足道的,因为您可以简单地将Element约束为数组,但这还不可能.)

您还应该注意,您的约束Element.Iterator.Element:Collection是不正确的,因为它会将扩展约束到集合的3D数组(元素是集合的数组,其中该集合的元素是集合).

最后,您可能必须定义一个类型来表示2D数组的“内部元素”类型,因为Swift当前具有some limitations when working with nested types directly,例如在创建该类型的空2D阵列时.

因此,当前方法的工作版本如下所示:

[+++]

通过使用嵌套映射(_ :)可以大大简化@MartinR points out below,从而消除了对类型的需求,因为我们不再需要创建“结果”数组:

[+++]

虽然请注意,扩展的约束仅适用于Int索引并不是绝对必要的(但是没有实际的区别,因为您只打算将其用于2D数组).另一种方法是直接迭代内部集合的索引.

为了做到这一点,你只需要约束你的扩展,以便内部集合的指数具有与集合的索引相同类型的元素(在数组的情况下,指数是一个CountableRange< Int>):

[+++] 总结

以上是内存溢出为你收集整理的数组 – Swift 2D数组通用扩展 – 访问第二维的问题全部内容,希望文章能够帮你解决数组 – Swift 2D数组通用扩展 – 访问第二维的问题所遇到的程序开发问题。

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

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, 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: 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(

概述我正在尝试将以下函数转换为2D数组的通用扩展. func rotate(_ input: [[Int]]) -> [[Int]]{ let length = input[0].count var value = Array(repeating: [Int](), count: length) for index in 0 ..< length { value[index] 我正在尝试将以下函数转换为2D数组的通用扩展.
func rotate(_ input: [[Int]]) -> [[Int]]{  let length = input[0].count  var value = Array(repeating: [Int](),count: length)  for index in 0 ..< length  {    value[index] = input.map { 
extension Array where Element: Collection,Element.Iterator.Element: Collection{  private func rotate()  {    let count = self[0].count // Element.Indexdistance instead of Int    // Expression type 'Array<Element>' is ambiguous without more context    var returnValue = Array(repeating: Element,count: 11)    for index in 0 ..< count // Element.Indexdistance instead of Int    {      returnValue[index] = self.map { 
extension Array where Element: Collection,Element.Index == Int,Element.Indexdistance == Int {    private func rotate() -> [[Element.Iterator.Element]] {        typealias InnerElement = Element.Iterator.Element        // in the case of an empty array,simply return an empty array        if self.isEmpty { return [] }         let length = self[0].count        var returnValue = [[InnerElement]](repeating: [InnerElement](),count: length)        for index in 0..<length {            returnValue[index] = self.map{ 
private func rotate() -> [[Element.Iterator.Element]] {    if self.isEmpty { return [] }    let length = self[0].count    return (0..<length).map { index in        self.map { 
extension Array where Element: Collection,Element.Indices.Iterator.Element == Element.Index {    private func rotate() -> [[Element.Iterator.Element]] {        if self.isEmpty { return [] }        return self[0].indices.map { index in            self.map { [index] }.reversed()        }    }}
[index] }.reversed() }}
[index] }.reversed() } return returnValue }}
[index] }.reversed() } return returnValue }}
[index] }.reversed() } return value}

我特别难以指出如何指定约束以允许我访问第二个维度.这是一次失败的尝试:

[+++] 问题是编译器不知道你的扩展是用于2D数组 – 它只知道它是用于集合数组.因此,关联类型Indexdistance和Index不一定是Int.

因此,解决方案是约束您的扩展,以便Element的Indexdistance和Index属于Int类型.这将允许您形成范围0 ..< count,因为count现在将是Int(Indexdistance)类型 - 并且您将能够使用Ints下标地图(_ :)中的元素(因为下标需要指数). (一旦支持concrete same-type requirements,这将是微不足道的,因为您可以简单地将Element约束为数组,但这还不可能.)

您还应该注意,您的约束Element.Iterator.Element:Collection是不正确的,因为它会将扩展约束到集合的3D数组(元素是集合的数组,其中该集合的元素是集合).

最后,您可能必须定义一个类型来表示2D数组的“内部元素”类型,因为Swift当前具有some limitations when working with nested types directly,例如在创建该类型的空2D阵列时.

因此,当前方法的工作版本如下所示:

[+++]

通过使用嵌套映射(_ :)可以大大简化@MartinR points out below,从而消除了对类型的需求,因为我们不再需要创建“结果”数组:

[+++]

虽然请注意,扩展的约束仅适用于Int索引并不是绝对必要的(但是没有实际的区别,因为您只打算将其用于2D数组).另一种方法是直接迭代内部集合的索引.

为了做到这一点,你只需要约束你的扩展,以便内部集合的指数具有与集合的索引相同类型的元素(在数组的情况下,指数是一个CountableRange< Int>):

[+++] 总结

以上是内存溢出为你收集整理的数组 – Swift 2D数组通用扩展 – 访问第二维的问题全部内容,希望文章能够帮你解决数组 – Swift 2D数组通用扩展 – 访问第二维的问题所遇到的程序开发问题。

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

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, 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(

概述我正在尝试将以下函数转换为2D数组的通用扩展. func rotate(_ input: [[Int]]) -> [[Int]]{ let length = input[0].count var value = Array(repeating: [Int](), count: length) for index in 0 ..< length { value[index] 我正在尝试将以下函数转换为2D数组的通用扩展.
func rotate(_ input: [[Int]]) -> [[Int]]{  let length = input[0].count  var value = Array(repeating: [Int](),count: length)  for index in 0 ..< length  {    value[index] = input.map { 
extension Array where Element: Collection,Element.Iterator.Element: Collection{  private func rotate()  {    let count = self[0].count // Element.Indexdistance instead of Int    // Expression type 'Array<Element>' is ambiguous without more context    var returnValue = Array(repeating: Element,count: 11)    for index in 0 ..< count // Element.Indexdistance instead of Int    {      returnValue[index] = self.map { 
extension Array where Element: Collection,Element.Index == Int,Element.Indexdistance == Int {    private func rotate() -> [[Element.Iterator.Element]] {        typealias InnerElement = Element.Iterator.Element        // in the case of an empty array,simply return an empty array        if self.isEmpty { return [] }         let length = self[0].count        var returnValue = [[InnerElement]](repeating: [InnerElement](),count: length)        for index in 0..<length {            returnValue[index] = self.map{ 
private func rotate() -> [[Element.Iterator.Element]] {    if self.isEmpty { return [] }    let length = self[0].count    return (0..<length).map { index in        self.map { 
extension Array where Element: Collection,Element.Indices.Iterator.Element == Element.Index {    private func rotate() -> [[Element.Iterator.Element]] {        if self.isEmpty { return [] }        return self[0].indices.map { index in            self.map { [index] }.reversed()        }    }}
[index] }.reversed() }}
[index] }.reversed() } return returnValue }}
[index] }.reversed() } return returnValue }}
[index] }.reversed() } return value}

我特别难以指出如何指定约束以允许我访问第二个维度.这是一次失败的尝试:

问题是编译器不知道你的扩展是用于2D数组 – 它只知道它是用于集合数组.因此,关联类型Indexdistance和Index不一定是Int.

因此,解决方案是约束您的扩展,以便Element的Indexdistance和Index属于Int类型.这将允许您形成范围0 ..< count,因为count现在将是Int(Indexdistance)类型 - 并且您将能够使用Ints下标地图(_ :)中的元素(因为下标需要指数). (一旦支持concrete same-type requirements,这将是微不足道的,因为您可以简单地将Element约束为数组,但这还不可能.)

您还应该注意,您的约束Element.Iterator.Element:Collection是不正确的,因为它会将扩展约束到集合的3D数组(元素是集合的数组,其中该集合的元素是集合).

最后,您可能必须定义一个类型来表示2D数组的“内部元素”类型,因为Swift当前具有some limitations when working with nested types directly,例如在创建该类型的空2D阵列时.

因此,当前方法的工作版本如下所示:

[+++]

通过使用嵌套映射(_ :)可以大大简化@MartinR points out below,从而消除了对类型的需求,因为我们不再需要创建“结果”数组:

[+++]

虽然请注意,扩展的约束仅适用于Int索引并不是绝对必要的(但是没有实际的区别,因为您只打算将其用于2D数组).另一种方法是直接迭代内部集合的索引.

为了做到这一点,你只需要约束你的扩展,以便内部集合的指数具有与集合的索引相同类型的元素(在数组的情况下,指数是一个CountableRange< Int>):

[+++] 总结

以上是内存溢出为你收集整理的数组 – Swift 2D数组通用扩展 – 访问第二维的问题全部内容,希望文章能够帮你解决数组 – Swift 2D数组通用扩展 – 访问第二维的问题所遇到的程序开发问题。

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

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, 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: 8, 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(

概述我正在尝试将以下函数转换为2D数组的通用扩展. func rotate(_ input: [[Int]]) -> [[Int]]{ let length = input[0].count var value = Array(repeating: [Int](), count: length) for index in 0 ..< length { value[index] 我正在尝试将以下函数转换为2D数组的通用扩展.
func rotate(_ input: [[Int]]) -> [[Int]]{  let length = input[0].count  var value = Array(repeating: [Int](),count: length)  for index in 0 ..< length  {    value[index] = input.map { 
extension Array where Element: Collection,Element.Iterator.Element: Collection{  private func rotate()  {    let count = self[0].count // Element.Indexdistance instead of Int    // Expression type 'Array<Element>' is ambiguous without more context    var returnValue = Array(repeating: Element,count: 11)    for index in 0 ..< count // Element.Indexdistance instead of Int    {      returnValue[index] = self.map { 
extension Array where Element: Collection,Element.Index == Int,Element.Indexdistance == Int {    private func rotate() -> [[Element.Iterator.Element]] {        typealias InnerElement = Element.Iterator.Element        // in the case of an empty array,simply return an empty array        if self.isEmpty { return [] }         let length = self[0].count        var returnValue = [[InnerElement]](repeating: [InnerElement](),count: length)        for index in 0..<length {            returnValue[index] = self.map{ 
private func rotate() -> [[Element.Iterator.Element]] {    if self.isEmpty { return [] }    let length = self[0].count    return (0..<length).map { index in        self.map { 
extension Array where Element: Collection,Element.Indices.Iterator.Element == Element.Index {    private func rotate() -> [[Element.Iterator.Element]] {        if self.isEmpty { return [] }        return self[0].indices.map { index in            self.map { [index] }.reversed()        }    }}
[index] }.reversed() }}
[index] }.reversed() } return returnValue }}
[index] }.reversed() } return returnValue }}
[index] }.reversed() } return value}

我特别难以指出如何指定约束以允许我访问第二个维度.这是一次失败的尝试:

问题是编译器不知道你的扩展是用于2D数组 – 它只知道它是用于集合数组.因此,关联类型Indexdistance和Index不一定是Int.

因此,解决方案是约束您的扩展,以便Element的Indexdistance和Index属于Int类型.这将允许您形成范围0 ..< count,因为count现在将是Int(Indexdistance)类型 - 并且您将能够使用Ints下标地图(_ :)中的元素(因为下标需要指数). (一旦支持concrete same-type requirements,这将是微不足道的,因为您可以简单地将Element约束为数组,但这还不可能.)

您还应该注意,您的约束Element.Iterator.Element:Collection是不正确的,因为它会将扩展约束到集合的3D数组(元素是集合的数组,其中该集合的元素是集合).

最后,您可能必须定义一个类型来表示2D数组的“内部元素”类型,因为Swift当前具有some limitations when working with nested types directly,例如在创建该类型的空2D阵列时.

因此,当前方法的工作版本如下所示:

通过使用嵌套映射(_ :)可以大大简化@MartinR points out below,从而消除了对类型的需求,因为我们不再需要创建“结果”数组:

[+++]

虽然请注意,扩展的约束仅适用于Int索引并不是绝对必要的(但是没有实际的区别,因为您只打算将其用于2D数组).另一种方法是直接迭代内部集合的索引.

为了做到这一点,你只需要约束你的扩展,以便内部集合的指数具有与集合的索引相同类型的元素(在数组的情况下,指数是一个CountableRange< Int>):

[+++] 总结

以上是内存溢出为你收集整理的数组 – Swift 2D数组通用扩展 – 访问第二维的问题全部内容,希望文章能够帮你解决数组 – Swift 2D数组通用扩展 – 访问第二维的问题所遇到的程序开发问题。

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

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, 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: 9, 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(

概述我正在尝试将以下函数转换为2D数组的通用扩展. func rotate(_ input: [[Int]]) -> [[Int]]{ let length = input[0].count var value = Array(repeating: [Int](), count: length) for index in 0 ..< length { value[index] 我正在尝试将以下函数转换为2D数组的通用扩展.
func rotate(_ input: [[Int]]) -> [[Int]]{  let length = input[0].count  var value = Array(repeating: [Int](),count: length)  for index in 0 ..< length  {    value[index] = input.map { 
extension Array where Element: Collection,Element.Iterator.Element: Collection{  private func rotate()  {    let count = self[0].count // Element.Indexdistance instead of Int    // Expression type 'Array<Element>' is ambiguous without more context    var returnValue = Array(repeating: Element,count: 11)    for index in 0 ..< count // Element.Indexdistance instead of Int    {      returnValue[index] = self.map { 
extension Array where Element: Collection,Element.Index == Int,Element.Indexdistance == Int {    private func rotate() -> [[Element.Iterator.Element]] {        typealias InnerElement = Element.Iterator.Element        // in the case of an empty array,simply return an empty array        if self.isEmpty { return [] }         let length = self[0].count        var returnValue = [[InnerElement]](repeating: [InnerElement](),count: length)        for index in 0..<length {            returnValue[index] = self.map{ 
private func rotate() -> [[Element.Iterator.Element]] {    if self.isEmpty { return [] }    let length = self[0].count    return (0..<length).map { index in        self.map { 
extension Array where Element: Collection,Element.Indices.Iterator.Element == Element.Index {    private func rotate() -> [[Element.Iterator.Element]] {        if self.isEmpty { return [] }        return self[0].indices.map { index in            self.map { [index] }.reversed()        }    }}
[index] }.reversed() }}
[index] }.reversed() } return returnValue }}
[index] }.reversed() } return returnValue }}
[index] }.reversed() } return value}

我特别难以指出如何指定约束以允许我访问第二个维度.这是一次失败的尝试:

问题是编译器不知道你的扩展是用于2D数组 – 它只知道它是用于集合数组.因此,关联类型Indexdistance和Index不一定是Int.

因此,解决方案是约束您的扩展,以便Element的Indexdistance和Index属于Int类型.这将允许您形成范围0 ..< count,因为count现在将是Int(Indexdistance)类型 - 并且您将能够使用Ints下标地图(_ :)中的元素(因为下标需要指数). (一旦支持concrete same-type requirements,这将是微不足道的,因为您可以简单地将Element约束为数组,但这还不可能.)

您还应该注意,您的约束Element.Iterator.Element:Collection是不正确的,因为它会将扩展约束到集合的3D数组(元素是集合的数组,其中该集合的元素是集合).

最后,您可能必须定义一个类型来表示2D数组的“内部元素”类型,因为Swift当前具有some limitations when working with nested types directly,例如在创建该类型的空2D阵列时.

因此,当前方法的工作版本如下所示:

通过使用嵌套映射(_ :)可以大大简化@MartinR points out below,从而消除了对类型的需求,因为我们不再需要创建“结果”数组:

虽然请注意,扩展的约束仅适用于Int索引并不是绝对必要的(但是没有实际的区别,因为您只打算将其用于2D数组).另一种方法是直接迭代内部集合的索引.

为了做到这一点,你只需要约束你的扩展,以便内部集合的指数具有与集合的索引相同类型的元素(在数组的情况下,指数是一个CountableRange< Int>):

[+++] 总结

以上是内存溢出为你收集整理的数组 – Swift 2D数组通用扩展 – 访问第二维的问题全部内容,希望文章能够帮你解决数组 – Swift 2D数组通用扩展 – 访问第二维的问题所遇到的程序开发问题。

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

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, 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)
数组 – Swift 2D数组通用扩展 – 访问第二维的问题_app_内存溢出

数组 – Swift 2D数组通用扩展 – 访问第二维的问题

数组 – Swift 2D数组通用扩展 – 访问第二维的问题,第1张

概述我正在尝试将以下函数转换为2D数组的通用扩展. func rotate(_ input: [[Int]]) -> [[Int]]{ let length = input[0].count var value = Array(repeating: [Int](), count: length) for index in 0 ..< length { value[index] 我正在尝试将以下函数转换为2D数组的通用扩展.
func rotate(_ input: [[Int]]) -> [[Int]]{  let length = input[0].count  var value = Array(repeating: [Int](),count: length)  for index in 0 ..< length  {    value[index] = input.map { 
extension Array where Element: Collection,Element.Iterator.Element: Collection{  private func rotate()  {    let count = self[0].count // Element.Indexdistance instead of Int    // Expression type 'Array<Element>' is ambiguous without more context    var returnValue = Array(repeating: Element,count: 11)    for index in 0 ..< count // Element.Indexdistance instead of Int    {      returnValue[index] = self.map { 
extension Array where Element: Collection,Element.Index == Int,Element.Indexdistance == Int {    private func rotate() -> [[Element.Iterator.Element]] {        typealias InnerElement = Element.Iterator.Element        // in the case of an empty array,simply return an empty array        if self.isEmpty { return [] }         let length = self[0].count        var returnValue = [[InnerElement]](repeating: [InnerElement](),count: length)        for index in 0..<length {            returnValue[index] = self.map{ 
private func rotate() -> [[Element.Iterator.Element]] {    if self.isEmpty { return [] }    let length = self[0].count    return (0..<length).map { index in        self.map { 
extension Array where Element: Collection,Element.Indices.Iterator.Element == Element.Index {    private func rotate() -> [[Element.Iterator.Element]] {        if self.isEmpty { return [] }        return self[0].indices.map { index in            self.map { [index] }.reversed()        }    }}
[index] }.reversed() }}
[index] }.reversed() } return returnValue }}
[index] }.reversed() } return returnValue }}
[index] }.reversed() } return value}

我特别难以指出如何指定约束以允许我访问第二个维度.这是一次失败的尝试:

问题是编译器不知道你的扩展是用于2D数组 – 它只知道它是用于集合数组.因此,关联类型Indexdistance和Index不一定是Int.

因此,解决方案是约束您的扩展,以便Element的Indexdistance和Index属于Int类型.这将允许您形成范围0 ..< count,因为count现在将是Int(Indexdistance)类型 - 并且您将能够使用Ints下标地图(_ :)中的元素(因为下标需要指数). (一旦支持concrete same-type requirements,这将是微不足道的,因为您可以简单地将Element约束为数组,但这还不可能.)

您还应该注意,您的约束Element.Iterator.Element:Collection是不正确的,因为它会将扩展约束到集合的3D数组(元素是集合的数组,其中该集合的元素是集合).

最后,您可能必须定义一个类型来表示2D数组的“内部元素”类型,因为Swift当前具有some limitations when working with nested types directly,例如在创建该类型的空2D阵列时.

因此,当前方法的工作版本如下所示:

通过使用嵌套映射(_ :)可以大大简化@MartinR points out below,从而消除了对类型的需求,因为我们不再需要创建“结果”数组:

虽然请注意,扩展的约束仅适用于Int索引并不是绝对必要的(但是没有实际的区别,因为您只打算将其用于2D数组).另一种方法是直接迭代内部集合的索引.

为了做到这一点,你只需要约束你的扩展,以便内部集合的指数具有与集合的索引相同类型的元素(在数组的情况下,指数是一个CountableRange< Int>):

总结

以上是内存溢出为你收集整理的数组 – Swift 2D数组通用扩展 – 访问第二维的问题全部内容,希望文章能够帮你解决数组 – Swift 2D数组通用扩展 – 访问第二维的问题所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存