swift - Swift Bool 函数返回永远不会执行
问题描述
我想创建一个代码,它可以确定该字符是否是我列表中的符号之一。
var symbols = ["+","-"]
func issymbol(last:String ) -> Bool{
return true
for i in 0...(symbols.count){
if last == symbols[i]{
return false
}
}
}
解决方案
这段代码有很多问题。
- 该行
return true
立即返回,因此不会执行检查(错误消息)。 该行将
for i in 0...(symbols.count)
崩溃,因为索引从 0 开始,最后一个索引是symbols.count - 1
. 或者,您可以编写for i in 0..<symbols.count
. 最好的语法不是编写基于索引的循环:for symbol in symbols { if last == symbol ...
- 如果找到该项目,则返回代码
false
而不是true
. - 如果未找到该项目,则代码不会在循环
Bool
后返回 a (将导致另一个错误)。
正确的代码是
let symbols = ["+","-"]
func issymbol(last: String) -> Bool {
for i in 0...symbols.count - 1 {
if last == symbols[i] {
return true
}
}
return false
}
然而,这可以减少到
func issymbol(last: String) -> Bool {
return symbols.contains(last)
}
推荐阅读
- django - 使用多个 Mixins 作为继承,方法执行顺序问题
- android - 如何在服务器中没有刷新令牌的情况下刷新或扩展Android App传递的谷歌访问令牌?
- javascript - 在文本文件中搜索数组
- php - 定位器 i Yii2 未找到 Codeception/AspectMock 父类
- python-3.x - Python3反转输入的句子
- ios - 通过cordova问题将字符串转换为ios中的日期
- javascript - Webpack 插件使用 asm 更改内容
- visual-c++ - 如何将浮点数拆分为两个变量?(c++)
- php - 即使遵循迁移过程,我也无法从 laravel 向表中添加新列?
- assembly - 如何在 8 位环境中检测 0 减 -128 溢出?