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(

概述我在 Swift 4.2中的集合上使用.map时遇到了一些麻烦. 以下是发生的事情: 我有一个声明如下的属性: var cbPerifList:[CBPeripheral]! 我写的代码后面: _ = cbPerifList.map { (perif) -> Void in print(perif.identifier)} 编译器看起来很开心并且没有抱怨. 但是当我写道: _ = cbP 我在 Swift 4.2中的集合上使用.map时遇到了一些麻烦.
以下是发生的事情:

我有一个声明如下的属性:

var cbPerifList:[CBPeripheral]!

我写的代码后面:

_ = cbPerifList.map { (perif) -> VoID in    print(perif.IDentifIEr)}

编译器看起来很开心并且没有抱怨.

但是当我写道:

_ = cbPerifList.map { (perif) -> VoID in    print(perif.IDentifIEr)    print("HELLO")}

编译器通过显示此消息进行抱怨.

Value of type '[CBPeripheral]' has no member 'IDentifIEr'

在代码行上:print(perif.IDentifIEr)

有人能解释一下这里发生了什么吗?

>我不明白为什么添加这行代码会产生影响.

打印( “HELLO”)
>我希望perif是CBPeripheral类型,而不是[CBPeripheral],如错误消息所示.

解决方法 地图在Swift(以及其他地方)中的工作方式是它可以将输入从一种类型映射(更改)到另一种类型.因此,在您的情况下,您将在[CBPeripheral]上调用map,对于每个元素,map函数将返回另一个值.因此,如果标识符是String,那么最终会得到一个字符串数组.

这就是它应该如何运作.

然而:)

在您的情况下,您已经定义了映射函数

(perif) -> VoID

这意味着您将运行数组并调用map,其函数不返回任何内容.意味着结果将是一个填充VoID值的数组.

因此,正如其他人在评论中建议的那样,如果您只是想检查cbPerifList的内容,那么最好使用for循环,如此

for cbPerif in cbPerifList {    print(cbPerif.IDentifIEr)}

但是,如果你有兴趣获得一系列CBperipherals的名字,你可以做这样的事情

let names = cbPerifList.map { [+++].IDentifIEr }

对上述内容的评论:要阅读更多关于我们如何才能写完{$0.name}的内容,请查看Swift文档中关于Closures的章节,或者this answer

希望对你有所帮助.

总结

以上是内存溢出为你收集整理的Swift 4.2怪异的-map-行为全部内容,希望文章能够帮你解决Swift 4.2怪异的-map-行为所遇到的程序开发问题。

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

)
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)
Swift 4.2怪异的-map-行为_app_内存溢出

Swift 4.2怪异的-map-行为

Swift 4.2怪异的-map-行为,第1张

概述我在 Swift 4.2中的集合上使用.map时遇到了一些麻烦. 以下是发生的事情: 我有一个声明如下的属性: var cbPerifList:[CBPeripheral]! 我写的代码后面: _ = cbPerifList.map { (perif) -> Void in print(perif.identifier)} 编译器看起来很开心并且没有抱怨. 但是当我写道: _ = cbP 我在 Swift 4.2中的集合上使用.map时遇到了一些麻烦.
以下是发生的事情:

我有一个声明如下的属性:

var cbPerifList:[CBPeripheral]!

我写的代码后面:

_ = cbPerifList.map { (perif) -> VoID in    print(perif.IDentifIEr)}

编译器看起来很开心并且没有抱怨.

但是当我写道:

_ = cbPerifList.map { (perif) -> VoID in    print(perif.IDentifIEr)    print("HELLO")}

编译器通过显示此消息进行抱怨.

Value of type '[CBPeripheral]' has no member 'IDentifIEr'

在代码行上:print(perif.IDentifIEr)

有人能解释一下这里发生了什么吗?

>我不明白为什么添加这行代码会产生影响.

打印( “HELLO”)
>我希望perif是CBPeripheral类型,而不是[CBPeripheral],如错误消息所示.

解决方法 地图在Swift(以及其他地方)中的工作方式是它可以将输入从一种类型映射(更改)到另一种类型.因此,在您的情况下,您将在[CBPeripheral]上调用map,对于每个元素,map函数将返回另一个值.因此,如果标识符是String,那么最终会得到一个字符串数组.

这就是它应该如何运作.

然而:)

在您的情况下,您已经定义了映射函数

(perif) -> VoID

这意味着您将运行数组并调用map,其函数不返回任何内容.意味着结果将是一个填充VoID值的数组.

因此,正如其他人在评论中建议的那样,如果您只是想检查cbPerifList的内容,那么最好使用for循环,如此

for cbPerif in cbPerifList {    print(cbPerif.IDentifIEr)}

但是,如果你有兴趣获得一系列CBperipherals的名字,你可以做这样的事情

let names = cbPerifList.map { .IDentifIEr }

对上述内容的评论:要阅读更多关于我们如何才能写完{$0.name}的内容,请查看Swift文档中关于Closures的章节,或者this answer

希望对你有所帮助.

总结

以上是内存溢出为你收集整理的Swift 4.2怪异的-map-行为全部内容,希望文章能够帮你解决Swift 4.2怪异的-map-行为所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存