我不完全理解,我可以交替使用return和return nil吗?return和return nil是否有相似的返回类型?
下面是代码的两个实例。
一审:
func naming(name: Int) -> String? {
switch name {
case 0: return "Neo"
case 1: return "Matrix"
default: return nil
}
}
naming(name: 2) // nil二审:
guard let video = try? avplayer else {
print("Unable to load a movie")
return
}发布于 2019-07-08 10:55:36
不,他们不一样。
当您需要返回一个值时,会使用返回nil,但该值可以是可选的。所以在你的例子中:
func naming(name: Int) -> String? {
switch name {
case 0: return "Neo"
case 1: return "Matrix"
default: return nil
}
}函数期望返回一个String或一个nil值,因此是String?。最后的问号表示String是可选的。当您调用naming(name: 2)时,它调用switch语句,而找不到与数字2对应的值,因此默认返回nil。
在第二个示例中使用return只会阻止函数的其余部分执行。所以:
function loadVideo() {
guard let video = try? avplayer else {
print("Unable to load a movie")
return
}
print("hello")
}如果avplayer变量为零,则guard语句将执行其else语句,并输出Unable to load a movie,然后从函数中输出return。这将防止hello被打印。
发布于 2019-07-08 10:57:57
不,两者不一样!
没有任何参数的return返回Void。这种形式的return语句只能与返回Void的函数一起使用。
一旦执行return语句,函数就会退出,并且不再执行函数中的代码。
发布于 2019-07-08 11:03:08
对你问题的简单回答是否定的
在你的例子中
func naming(name: Int) -> String? /* reference */ {
switch name {
case 0: return "Neo"
case 1: return "Matrix"
default: return nil
}
}/*引用*/您应该在这里返回可选字符串--如果您决定只返回没有值的字符串,则可能是字符串值或零--您将得到编译错误
func naming(name: Int) {
switch name {
case 0: return "Neo" /* reference */
case 1: return "Matrix" /* reference */
default: return nil /* reference */
}
}如果您尝试从这个函数返回任何值,并且您可以在任何时候返回而不依赖于您的业务,那么您应该在/*引用上得到编译错误*/
https://stackoverflow.com/questions/56933322
复制相似问题