首页 > 解决方案 > Swift Bool 函数返回永远不会执行

问题描述

我想创建一个代码,它可以确定该字符是否是我列表中的符号之一。

var symbols = ["+","-"]
func issymbol(last:String ) -> Bool{
    return true
    for i in 0...(symbols.count){
    if last == symbols[i]{
       return false
    }
    }
}

例子

标签: swiftboolean

解决方案


这段代码有很多问题。

  1. 该行return true立即返回,因此不会执行检查(错误消息)。
  2. 该行将for i in 0...(symbols.count)崩溃,因为索引从 0 开始,最后一个索引是symbols.count - 1. 或者,您可以编写for i in 0..<symbols.count. 最好的语法不是编写基于索引的循环:

    for symbol in symbols { if last == symbol ...
    
  3. 如果找到该项目,则返回代码false而不是true.
  4. 如果未找到该项目,则代码不会在循环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)
}

推荐阅读