struct Kitten {} func showKitten(kitten: Kitten?) { guard let k = kitten else { print(“There is no kitten”) } print(k)}
提示:有三种方法修复它。
答案:guard语句中得else语句必须需要一个返回路径,你可以使用return ,抛出异常或者调用@noreturn.最简单的解决方法是添加一个return语句,代码如下:
func showKitten(kitten: Kitten?) { guard let k = kitten else { print(“There is no kitten”) return } print(k)}
下面是抛出异常的版本:
enum KittenError: ErrorType { case NoKitten} struct Kitten {} func showKitten(kitten: Kitten?) throws { guard let k = kitten else { print(“There is no kitten”) throw KittenError.NoKitten } print(k)} try showKitten(nil)
最后,调用一个@noreturn功能函数 fatalError( ) 解决方案:
struct Kitten {} func showKitten(kitten: Kitten?) { guard let k = kitten else { print(“There is no kitten”) fatalError() } print(k)}