以下是发生的事情:
我有一个声明如下的属性:
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],如错误消息所示.
这就是它应该如何运作.
然而:)
在您的情况下,您已经定义了映射函数
(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-行为所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)