下面的代码有一个编译错误,请指出来并说明原因。

匿名网友 匿名网友 发布于: 2015-12-29 00:00:00
阅读 99 收藏 0 点赞 0 评论 0

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)}

评论列表
文章目录