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

概述斯威夫特3 尝试编写一个通用数组扩展,获取不等于值的项的所有索引 例 let arr: [String] = ["Empty", "Empty", "Full", "Empty", "Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: "Empty") //returns [2, 4] 我试图制作一个通用函数: exte 斯威夫特3

尝试编写一个通用数组扩展,获取不等于值的项的所有索引

let arr: [String] = ["Empty","Empty","Full","Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: "Empty") //returns [2,4]

我试图制作一个通用函数:

extension Array {    func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?  {        var result: [Int] = []        for (n,elem) in self.enumerated() {            if elem  != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

但是这会发出警告:二进制运算符不能应用于“Element”和“T”类型的 *** 作数.

所以我在这里投了元素(注意为?)

extension Array {    func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?  {        var result: [Int] = []        for (n,elem) in self.enumerated() {            if elem as? T != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

但现在似乎类型检查已经消失了,因为如果我传入一个整数,我得到错误的结果

let arr: [String] = ["Empty","Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: 100) //returns [0,1,2,3,4]

非常感谢帮助.

使用reduce函数有更好的方法吗?

解决方法 您已经定义了一个通用方法

func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?

它采用类型为T的参数
Equatable,但与数组的Element类型无关.

因此

let arr = ["Empty","Full"]let result = arr.indexes(ofItemsNotEqualTo: 100)

编译,但是作为? T给出nil(这是!=项目)
对于所有数组元素.

你想要的是一个只为数组定义的方法
等同的元素.这可以通过约束来实现
延期:

extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]?  {        var result: [Int] = []        for (n,elem) in enumerated() {            if elem != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

实际上我不会将返回值设为可选.
如果所有元素都等于给定项,那么逻辑
返回值将是空数组.

Is there a better way to do this with the reduce function?

好吧,您可以使用reduce(),但这不是非常有效,因为在每个迭代步骤中都会创建中间数组:

extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().reduce([]) {            .element == item ? 
extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().filter { 
extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().flatMap { 
let arr = ["Empty","Full"]arr.indexes(ofItemsNotEqualTo: "Full") // [0,3][1,1].indexes(ofItemsNotEqualTo: 1) // []arr.indexes(ofItemsNotEqualTo: 100)// error: cannot convert value of type 'Int' to expected argument type 'String'
.element != item ? [+++].offset : nil } }}
.element != item }.map { [+++].offset } }}
: [+++] + [.offset] } }}

你实际拥有的是一个
“过滤地图” *** 作:

[+++]

可以使用flatMap()简化:

[+++]

例子:

[+++] 总结

以上是内存溢出为你收集整理的arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引全部内容,希望文章能够帮你解决arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引所遇到的程序开发问题。

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

)
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: 12, 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(

概述斯威夫特3 尝试编写一个通用数组扩展,获取不等于值的项的所有索引 例 let arr: [String] = ["Empty", "Empty", "Full", "Empty", "Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: "Empty") //returns [2, 4] 我试图制作一个通用函数: exte 斯威夫特3

尝试编写一个通用数组扩展,获取不等于值的项的所有索引

let arr: [String] = ["Empty","Empty","Full","Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: "Empty") //returns [2,4]

我试图制作一个通用函数:

extension Array {    func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?  {        var result: [Int] = []        for (n,elem) in self.enumerated() {            if elem  != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

但是这会发出警告:二进制运算符不能应用于“Element”和“T”类型的 *** 作数.

所以我在这里投了元素(注意为?)

extension Array {    func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?  {        var result: [Int] = []        for (n,elem) in self.enumerated() {            if elem as? T != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

但现在似乎类型检查已经消失了,因为如果我传入一个整数,我得到错误的结果

let arr: [String] = ["Empty","Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: 100) //returns [0,1,2,3,4]

非常感谢帮助.

使用reduce函数有更好的方法吗?

解决方法 您已经定义了一个通用方法

func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?

它采用类型为T的参数
Equatable,但与数组的Element类型无关.

因此

let arr = ["Empty","Full"]let result = arr.indexes(ofItemsNotEqualTo: 100)

编译,但是作为? T给出nil(这是!=项目)
对于所有数组元素.

你想要的是一个只为数组定义的方法
等同的元素.这可以通过约束来实现
延期:

extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]?  {        var result: [Int] = []        for (n,elem) in enumerated() {            if elem != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

实际上我不会将返回值设为可选.
如果所有元素都等于给定项,那么逻辑
返回值将是空数组.

Is there a better way to do this with the reduce function?

好吧,您可以使用reduce(),但这不是非常有效,因为在每个迭代步骤中都会创建中间数组:

extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().reduce([]) {            .element == item ? 
extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().filter { 
extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().flatMap { 
let arr = ["Empty","Full"]arr.indexes(ofItemsNotEqualTo: "Full") // [0,3][1,1].indexes(ofItemsNotEqualTo: 1) // []arr.indexes(ofItemsNotEqualTo: 100)// error: cannot convert value of type 'Int' to expected argument type 'String'
.element != item ? .offset : nil } }}
.element != item }.map { [+++].offset } }}
: [+++] + [.offset] } }}

你实际拥有的是一个
“过滤地图” *** 作:

[+++]

可以使用flatMap()简化:

[+++]

例子:

[+++] 总结

以上是内存溢出为你收集整理的arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引全部内容,希望文章能够帮你解决arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引所遇到的程序开发问题。

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

)
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: 13, 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(

概述斯威夫特3 尝试编写一个通用数组扩展,获取不等于值的项的所有索引 例 let arr: [String] = ["Empty", "Empty", "Full", "Empty", "Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: "Empty") //returns [2, 4] 我试图制作一个通用函数: exte 斯威夫特3

尝试编写一个通用数组扩展,获取不等于值的项的所有索引

let arr: [String] = ["Empty","Empty","Full","Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: "Empty") //returns [2,4]

我试图制作一个通用函数:

extension Array {    func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?  {        var result: [Int] = []        for (n,elem) in self.enumerated() {            if elem  != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

但是这会发出警告:二进制运算符不能应用于“Element”和“T”类型的 *** 作数.

所以我在这里投了元素(注意为?)

extension Array {    func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?  {        var result: [Int] = []        for (n,elem) in self.enumerated() {            if elem as? T != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

但现在似乎类型检查已经消失了,因为如果我传入一个整数,我得到错误的结果

let arr: [String] = ["Empty","Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: 100) //returns [0,1,2,3,4]

非常感谢帮助.

使用reduce函数有更好的方法吗?

解决方法 您已经定义了一个通用方法

func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?

它采用类型为T的参数
Equatable,但与数组的Element类型无关.

因此

let arr = ["Empty","Full"]let result = arr.indexes(ofItemsNotEqualTo: 100)

编译,但是作为? T给出nil(这是!=项目)
对于所有数组元素.

你想要的是一个只为数组定义的方法
等同的元素.这可以通过约束来实现
延期:

extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]?  {        var result: [Int] = []        for (n,elem) in enumerated() {            if elem != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

实际上我不会将返回值设为可选.
如果所有元素都等于给定项,那么逻辑
返回值将是空数组.

Is there a better way to do this with the reduce function?

好吧,您可以使用reduce(),但这不是非常有效,因为在每个迭代步骤中都会创建中间数组:

extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().reduce([]) {            .element == item ? 
extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().filter { 
extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().flatMap { 
let arr = ["Empty","Full"]arr.indexes(ofItemsNotEqualTo: "Full") // [0,3][1,1].indexes(ofItemsNotEqualTo: 1) // []arr.indexes(ofItemsNotEqualTo: 100)// error: cannot convert value of type 'Int' to expected argument type 'String'
.element != item ? .offset : nil } }}
.element != item }.map { .offset } }}
: [+++] + [.offset] } }}

你实际拥有的是一个
“过滤地图” *** 作:

[+++]

可以使用flatMap()简化:

[+++]

例子:

[+++] 总结

以上是内存溢出为你收集整理的arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引全部内容,希望文章能够帮你解决arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引所遇到的程序开发问题。

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

)
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: 14, 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(

概述斯威夫特3 尝试编写一个通用数组扩展,获取不等于值的项的所有索引 例 let arr: [String] = ["Empty", "Empty", "Full", "Empty", "Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: "Empty") //returns [2, 4] 我试图制作一个通用函数: exte 斯威夫特3

尝试编写一个通用数组扩展,获取不等于值的项的所有索引

let arr: [String] = ["Empty","Empty","Full","Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: "Empty") //returns [2,4]

我试图制作一个通用函数:

extension Array {    func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?  {        var result: [Int] = []        for (n,elem) in self.enumerated() {            if elem  != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

但是这会发出警告:二进制运算符不能应用于“Element”和“T”类型的 *** 作数.

所以我在这里投了元素(注意为?)

extension Array {    func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?  {        var result: [Int] = []        for (n,elem) in self.enumerated() {            if elem as? T != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

但现在似乎类型检查已经消失了,因为如果我传入一个整数,我得到错误的结果

let arr: [String] = ["Empty","Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: 100) //returns [0,1,2,3,4]

非常感谢帮助.

使用reduce函数有更好的方法吗?

解决方法 您已经定义了一个通用方法

func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?

它采用类型为T的参数
Equatable,但与数组的Element类型无关.

因此

let arr = ["Empty","Full"]let result = arr.indexes(ofItemsNotEqualTo: 100)

编译,但是作为? T给出nil(这是!=项目)
对于所有数组元素.

你想要的是一个只为数组定义的方法
等同的元素.这可以通过约束来实现
延期:

extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]?  {        var result: [Int] = []        for (n,elem) in enumerated() {            if elem != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

实际上我不会将返回值设为可选.
如果所有元素都等于给定项,那么逻辑
返回值将是空数组.

Is there a better way to do this with the reduce function?

好吧,您可以使用reduce(),但这不是非常有效,因为在每个迭代步骤中都会创建中间数组:

extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().reduce([]) {            .element == item ? 
extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().filter { 
extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().flatMap { 
let arr = ["Empty","Full"]arr.indexes(ofItemsNotEqualTo: "Full") // [0,3][1,1].indexes(ofItemsNotEqualTo: 1) // []arr.indexes(ofItemsNotEqualTo: 100)// error: cannot convert value of type 'Int' to expected argument type 'String'
.element != item ? .offset : nil } }}
.element != item }.map { .offset } }}
: + [.offset] } }}

你实际拥有的是一个
“过滤地图” *** 作:

[+++]

可以使用flatMap()简化:

[+++]

例子:

[+++] 总结

以上是内存溢出为你收集整理的arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引全部内容,希望文章能够帮你解决arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引所遇到的程序开发问题。

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

)
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: 15, 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(

概述斯威夫特3 尝试编写一个通用数组扩展,获取不等于值的项的所有索引 例 let arr: [String] = ["Empty", "Empty", "Full", "Empty", "Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: "Empty") //returns [2, 4] 我试图制作一个通用函数: exte 斯威夫特3

尝试编写一个通用数组扩展,获取不等于值的项的所有索引

let arr: [String] = ["Empty","Empty","Full","Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: "Empty") //returns [2,4]

我试图制作一个通用函数:

extension Array {    func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?  {        var result: [Int] = []        for (n,elem) in self.enumerated() {            if elem  != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

但是这会发出警告:二进制运算符不能应用于“Element”和“T”类型的 *** 作数.

所以我在这里投了元素(注意为?)

extension Array {    func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?  {        var result: [Int] = []        for (n,elem) in self.enumerated() {            if elem as? T != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

但现在似乎类型检查已经消失了,因为如果我传入一个整数,我得到错误的结果

let arr: [String] = ["Empty","Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: 100) //returns [0,1,2,3,4]

非常感谢帮助.

使用reduce函数有更好的方法吗?

解决方法 您已经定义了一个通用方法

func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?

它采用类型为T的参数
Equatable,但与数组的Element类型无关.

因此

let arr = ["Empty","Full"]let result = arr.indexes(ofItemsNotEqualTo: 100)

编译,但是作为? T给出nil(这是!=项目)
对于所有数组元素.

你想要的是一个只为数组定义的方法
等同的元素.这可以通过约束来实现
延期:

extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]?  {        var result: [Int] = []        for (n,elem) in enumerated() {            if elem != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

实际上我不会将返回值设为可选.
如果所有元素都等于给定项,那么逻辑
返回值将是空数组.

Is there a better way to do this with the reduce function?

好吧,您可以使用reduce(),但这不是非常有效,因为在每个迭代步骤中都会创建中间数组:

extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().reduce([]) {            .element == item ? 
extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().filter { 
extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().flatMap { 
let arr = ["Empty","Full"]arr.indexes(ofItemsNotEqualTo: "Full") // [0,3][1,1].indexes(ofItemsNotEqualTo: 1) // []arr.indexes(ofItemsNotEqualTo: 100)// error: cannot convert value of type 'Int' to expected argument type 'String'
.element != item ? .offset : nil } }}
.element != item }.map { .offset } }}
: + [.offset] } }}

你实际拥有的是一个
“过滤地图” *** 作:

可以使用flatMap()简化:

[+++]

例子:

[+++] 总结

以上是内存溢出为你收集整理的arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引全部内容,希望文章能够帮你解决arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引所遇到的程序开发问题。

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

)
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: 16, 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(

概述斯威夫特3 尝试编写一个通用数组扩展,获取不等于值的项的所有索引 例 let arr: [String] = ["Empty", "Empty", "Full", "Empty", "Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: "Empty") //returns [2, 4] 我试图制作一个通用函数: exte 斯威夫特3

尝试编写一个通用数组扩展,获取不等于值的项的所有索引

let arr: [String] = ["Empty","Empty","Full","Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: "Empty") //returns [2,4]

我试图制作一个通用函数:

extension Array {    func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?  {        var result: [Int] = []        for (n,elem) in self.enumerated() {            if elem  != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

但是这会发出警告:二进制运算符不能应用于“Element”和“T”类型的 *** 作数.

所以我在这里投了元素(注意为?)

extension Array {    func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?  {        var result: [Int] = []        for (n,elem) in self.enumerated() {            if elem as? T != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

但现在似乎类型检查已经消失了,因为如果我传入一个整数,我得到错误的结果

let arr: [String] = ["Empty","Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: 100) //returns [0,1,2,3,4]

非常感谢帮助.

使用reduce函数有更好的方法吗?

解决方法 您已经定义了一个通用方法

func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?

它采用类型为T的参数
Equatable,但与数组的Element类型无关.

因此

let arr = ["Empty","Full"]let result = arr.indexes(ofItemsNotEqualTo: 100)

编译,但是作为? T给出nil(这是!=项目)
对于所有数组元素.

你想要的是一个只为数组定义的方法
等同的元素.这可以通过约束来实现
延期:

extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]?  {        var result: [Int] = []        for (n,elem) in enumerated() {            if elem != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

实际上我不会将返回值设为可选.
如果所有元素都等于给定项,那么逻辑
返回值将是空数组.

Is there a better way to do this with the reduce function?

好吧,您可以使用reduce(),但这不是非常有效,因为在每个迭代步骤中都会创建中间数组:

extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().reduce([]) {            .element == item ? 
extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().filter { 
extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().flatMap { 
let arr = ["Empty","Full"]arr.indexes(ofItemsNotEqualTo: "Full") // [0,3][1,1].indexes(ofItemsNotEqualTo: 1) // []arr.indexes(ofItemsNotEqualTo: 100)// error: cannot convert value of type 'Int' to expected argument type 'String'
.element != item ? .offset : nil } }}
.element != item }.map { .offset } }}
: + [.offset] } }}

你实际拥有的是一个
“过滤地图” *** 作:

可以使用flatMap()简化:

例子:

[+++] 总结

以上是内存溢出为你收集整理的arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引全部内容,希望文章能够帮你解决arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引所遇到的程序开发问题。

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

)
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)
arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引_app_内存溢出

arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引

arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引,第1张

概述斯威夫特3 尝试编写一个通用数组扩展,获取不等于值的项的所有索引 例 let arr: [String] = ["Empty", "Empty", "Full", "Empty", "Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: "Empty") //returns [2, 4] 我试图制作一个通用函数: exte 斯威夫特3

尝试编写一个通用数组扩展,获取不等于值的项的所有索引

let arr: [String] = ["Empty","Empty","Full","Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: "Empty") //returns [2,4]

我试图制作一个通用函数:

extension Array {    func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?  {        var result: [Int] = []        for (n,elem) in self.enumerated() {            if elem  != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

但是这会发出警告:二进制运算符不能应用于“Element”和“T”类型的 *** 作数.

所以我在这里投了元素(注意为?)

extension Array {    func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?  {        var result: [Int] = []        for (n,elem) in self.enumerated() {            if elem as? T != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

但现在似乎类型检查已经消失了,因为如果我传入一个整数,我得到错误的结果

let arr: [String] = ["Empty","Full"] let result: [Int] = arr.indexes(ofItemsNotEqualTo item: 100) //returns [0,1,2,3,4]

非常感谢帮助.

使用reduce函数有更好的方法吗?

解决方法 您已经定义了一个通用方法

func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?

它采用类型为T的参数
Equatable,但与数组的Element类型无关.

因此

let arr = ["Empty","Full"]let result = arr.indexes(ofItemsNotEqualTo: 100)

编译,但是作为? T给出nil(这是!=项目)
对于所有数组元素.

你想要的是一个只为数组定义的方法
等同的元素.这可以通过约束来实现
延期:

extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]?  {        var result: [Int] = []        for (n,elem) in enumerated() {            if elem != item {                result.append(n)            }        }        return result.isEmpty ? nil : result    }}

实际上我不会将返回值设为可选.
如果所有元素都等于给定项,那么逻辑
返回值将是空数组.

Is there a better way to do this with the reduce function?

好吧,您可以使用reduce(),但这不是非常有效,因为在每个迭代步骤中都会创建中间数组:

extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().reduce([]) {            .element == item ? 
extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().filter { 
extension Array where Element: Equatable {    func indexes(ofItemsNotEqualTo item: Element) -> [Int]  {        return enumerated().flatMap { 
let arr = ["Empty","Full"]arr.indexes(ofItemsNotEqualTo: "Full") // [0,3][1,1].indexes(ofItemsNotEqualTo: 1) // []arr.indexes(ofItemsNotEqualTo: 100)// error: cannot convert value of type 'Int' to expected argument type 'String'
.element != item ? .offset : nil } }}
.element != item }.map { .offset } }}
: + [.offset] } }}

你实际拥有的是一个
“过滤地图” *** 作:

可以使用flatMap()简化:

例子:

总结

以上是内存溢出为你收集整理的arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引全部内容,希望文章能够帮你解决arrays – Swift泛型数组函数,用于查找不匹配项的元素的所有索引所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存