我不完全了解,我可以互换使用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
}
答案 0 :(得分:3)
没有两个都不一样!
return
,不带任何参数,返回Void
。 return
语句的这种形式只能与返回Void
的函数一起使用。
执行return
语句后,该函数将退出,并且您的函数中没有其他代码将执行。
答案 1 :(得分:2)
不,他们不一样。
当您需要返回一个值但该值可以是可选的时,使用返回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
变量为nil,则guard
语句将执行其else
语句并从函数中先打印出Unable to load a movie
,然后打印出return
。这将防止打印hello
。
答案 2 :(得分:2)
Kurt,您好,您显然是编程新手,尤其是
您问题的简单答案是否
在您的示例中
func naming(name: Int) -> String? /* reference */ {
switch name {
case 0: return "Neo"
case 1: return "Matrix"
default: return nil
}
}
/ *参考* / 您应该返回可选的字符串,这里可以是字符串值或nil 如果您决定只返回无值,则会出现编译错误
func naming(name: Int) {
switch name {
case 0: return "Neo" /* reference */
case 1: return "Matrix" /* reference */
default: return nil /* reference */
}
}
如果您尝试从该函数返回任何值,并且应该在任何时候返回没有任何值,这取决于您的业务,您将在/ *参考* /上遇到编译错误