ios – 删除数组中的元素而不对索引进行硬编码?在斯威夫特

ios – 删除数组中的元素而不对索引进行硬编码?在斯威夫特,第1张

概述这是我的第一篇文章,我很高兴加入这个社区.我正和Ray Wenderlich的视频教程学习 Swift.我在第3课中遇到的挑战是删除数组中的元素而不对索引进行硬编码.我理解Ray提供的正确答案,但只是不明白为什么我的答案不起作用.请看下面的Ray的答案以及我的答案.如果有人能为我解释,那将是伟大的!谢谢:] 正确答案: // Make an array with "C", "C++", and " 这是我的第一篇文章,我很高兴加入这个社区.我正和Ray Wenderlich的视频教程学习 Swift.我在第3课中遇到的挑战是删除数组中的元素而不对索引进行硬编码.我理解Ray提供的正确答案,但只是不明白为什么我的答案不起作用.请看下面的Ray的答案以及我的答案.如果有人能为我解释,那将是伟大的!谢谢:]

正确答案:

// Make an array with "C","C++",and "Objective-C"var programmingLanguages = ["C","Objective-C"]// Append "Swift" to the arrayprogrammingLanguages += "Swift"// Insert "JavaScript" at Index 2programmingLanguages.insert("Javscript",atIndex: 2)// Remove "Objective-C" (without hard-Coding the index)let optIndex = find(programmingLanguages,"Objective-C")if let defIndex = optIndex {  programmingLanguages.removeAtIndex(defIndex)}programmingLanguages

我的回答1:

// Make an array with "C",atIndex: 2)// Remove "Objective-C" (without hard-Coding the index)programmingLanguages.removeAtIndex(find(programmingLanguages,"Objective-C")programmingLanguages

我的回答2:

// Make an array with "C","Objective-C")programmingLanguages.removeAtIndex(optIndex)programmingLanguages
解决方法 当你使用find()时,不能保证返回结果(这里会发生什么?:find(programmingLanguages,“rick astley”))

为了解释这种可能性,find()返回一个“optional” – 这基本上只是意味着当它找不到匹配时它将返回nil.

为了防止您在某些不知道如何处理它的地方意外使用nil,该语言认为选项是一种不同的类型.简而言之,当您获得可选值时,必须检查nil.

执行此 *** 作的主要方法是使用“if let”语法 – 如Ray的示例中所示 – 但更简洁(也更常见)的方法是这样做:

if let defIndex = find(programmingLanguages,"Objective-C") {  programmingLanguages.removeAtIndex(defIndex)}

如果您确定可选项不是nil(就像您正在检查刚才插入的内容一样),您可以使用“强制解包”从可选中获取值(并且如果它为零则会导致错误和崩溃) .

你使用强制解包 *** 作符强制解包,感叹号!:

// defIndex is an optionallet defIndex = find(programmingLanguages,"Objective-C")// defIndex!  <-- unwraps the optional but raises an error if it's nilprogrammingLanguages.removeAtIndex(defIndex!)
总结

以上是内存溢出为你收集整理的ios – 删除数组中的元素而不对索引进行硬编码?在斯威夫特全部内容,希望文章能够帮你解决ios – 删除数组中的元素而不对索引进行硬编码?在斯威夫特所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存