如果使用return,Swift中的Guard语句有错误
我有这个密码如果使用return,Swift中的Guard语句有错误,swift,Swift,我有这个密码 guard let url = NSURL(string: urlString) else{ print("No URL") return } return语句产生错误 非void函数应返回一个值 省略返回会导致下面的错误 保卫者身体不可跌倒,考虑使用“返回”或“中断”来退出范围 如何避免此错误 错误是说您的guard语句位于func()中,该语句的预期返回值为某些类型 例如,在greet()函数中,返回一个S
guard let url = NSURL(string: urlString) else{
print("No URL")
return
}
return
语句产生错误
非void函数应返回一个值
省略返回
会导致下面的错误
保卫者身体不可跌倒,考虑使用“返回”或“中断”来退出范围
如何避免此错误 错误是说您的
guard
语句位于func()
中,该语句的预期返回值为某些类型
例如,在greet()
函数中,返回一个String
,因此guard
语句必须返回一个String
值。必须从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")
如果示例greet()
函数中未返回字符串
“抱歉,不允许使用荷马”,则您将看到相同的问题:
guard
语句只是针对它所包含的函数的不可用状态进行保护。因此guard
的return
语句只是函数早期return
的一种形式,因此,它必须返回与函数定义相同的类型
在上面的greet()
函数中,定义指定返回String
(->String
),因此保护
的else块中的返回
也必须返回一个字符串
您需要返回一个与函数的返回类型和您有错误的事实相适应的值。如果您需要答案中的更多细节,请显示您的功能。仅供参考-在Swift中使用URL
,而不是NSURL
。但是守卫声明的回报是什么?它基本上是一个if语句,那么它怎么能有一个返回值呢?我只是想退出警卫声明的主体。URL给了我错误。您必须在非void函数中返回任何值。@如果您需要更好的帮助,noobsmgoobs在您的问题中显示您的函数。我在函数中放了一个return语句,它成功了。我又做了一次guard语句,现在即使函数返回,错误也回来了。@noobsmgoobs请参见我的编辑…基本上guard返回和函数返回都是必需的,并且都必须与函数签名匹配