如何确保我在函数中返回正确的布尔值?

时间:2014-07-06 22:39:24

标签: swift xcode6

我正在浏览Apple的Swift编程指南,并在第146页遇到以下功能:

func containsCharacter(#string: String, #characterToFind: Character) -> BOOL {
    for character in string {
        if character == characterToFind {
            return true
        }
    }
    return false
}

为什么函数中此时出现的return false代码段?为什么这个函数看起来不像这样:

func containsCharacter(#string: String, #characterToFind: Character) -> BOOL {
    for character in string {
        if character == characterToFind {
            return true
        } else {
            return false
        }
    }
}

该功能如何按照Apple的书中显示的方式工作?

谢谢!

1 个答案:

答案 0 :(得分:1)

我想首先要说的是,你可能还没有意识到,return语句终止了函数的执行。 return语句的值传递给调用者,执行返回给调用者。

所以,有了这个,我们来看看这个功能。它在字符串中搜索特定字符。它是通过检查字符串中寻找匹配项的所有字符来实现的。如果找到匹配则返回true。否则它继续下一个字符。如果循环完成,则表示没有找到匹配的字符,因此该函数可以返回false。它需要到达循环的末尾才能确定没有匹配。

写你的方式,循环是没有意义的。该函数保证从第一次迭代返回。所以循环永远不会超过第一次迭代,并且函数只会与第一个字符进行比较。并且,为了好的衡量,如果字符串为空,则返回值将是未定义的。