我正在浏览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的书中显示的方式工作?
谢谢!
答案 0 :(得分:1)
我想首先要说的是,你可能还没有意识到,return
语句终止了函数的执行。 return
语句的值传递给调用者,执行返回给调用者。
所以,有了这个,我们来看看这个功能。它在字符串中搜索特定字符。它是通过检查字符串中寻找匹配项的所有字符来实现的。如果找到匹配则返回true。否则它继续下一个字符。如果循环完成,则表示没有找到匹配的字符,因此该函数可以返回false。它需要到达循环的末尾才能确定没有匹配。
写你的方式,循环是没有意义的。该函数保证从第一次迭代返回。所以循环永远不会超过第一次迭代,并且函数只会与第一个字符进行比较。并且,为了好的衡量,如果字符串为空,则返回值将是未定义的。