如果使用return,Swift中的Guard语句将出错

时间:2018-08-23 00:55:36

标签: swift

我有这个代码

 guard let url = NSURL(string: urlString) else{

            print("No URL")
            return

        }

return语句产生错误

  

非无效函数应返回一个值

省略return会给我下面的错误

  

'守卫'身体可能不会掉落,请考虑使用'return'或'break'退出范围

如何避免此错误?

1 个答案:

答案 0 :(得分:2)

错误是说您的guard语句在func()内,期望返回值约为type

例如,在greet()函数中,返回了String……因此,guard语句必须返回一个String值。您必须从type语句返回的值guard取决于包含它的函数。

func greet(person: String, day: String) -> String {
    guard person != "Homer" else {
        return "Sorry, no Homer's allowed"
    }

    return "Hello \(person), have a great \(day)"
}

greet(person: "Homer", day: "Monday")

greet(person: "Douglas", day: "Thursday")

如果示例String函数中未返回greet()“对不起,不允许荷马允许”,您将看到相同的问题:

broken guard statement

guard语句只是为了防止其所包含的功能处于无法使用的状态。因此,return的{​​{1}}语句只是早期guard的一种形式因此,该函数必须返回与函数定义相同的类型。

在以上定义的return函数中,指定返回一个greet()String),因此-> String的else块中的return 还必须返回一个guard