2017-04-20 61 views
-1

在以下代码中,您是否曾使用分配给tempName的值?换句话说,tempNameOptional Binding之外是否还有其他用途。您是否曾经使用if let语句中指定的值

var name:String? 

name = "Nathan" 

if let tempName = name{ 
    print("It's not nil, it has a value") 
    print(tempName) // Nathan - Would you ever use this value 
    print(name!) // Nathan 
}else{ 
    print("It's nil, no value has been set") 
} 

感谢

+2

如果你只是想检查值是否是'nil',那么可选的结合是没有意义的,因为你不需要绑定* *做。你可以使用普通的'name!= nil'或'if let _ = name {'。对刚刚绑定的变量使用'!'看起来像一个错误,因为可选绑定应该避免'!'。 – Sulthan

+2

*可选绑定*的全部要点是安全地创建一个展开的变量,然后您可以自由使用而不必担心再次展开!正如@Sulthan所说,如果你只是检查它是否为'nil',那么检查'nil'或者将它分配给'_'。所以是的,绝对的,在* optional binding *之后有一个用于变量的用法。 – vacawama

+0

我想我的问题是不明白'可选绑定'是什么,我认为主要用于'如果让'它是为了检查'nil'这肯定不是这样,我的坏。谢谢@Sulthan和@ vacawama - 指出这一点,现在有道理。 –

回答

2

在这个例子中没有,但如果你想要做的10个任务与name并将它传递给多种功能,在这些情况下是。如果你不使用它想象的情况你必须为每一个这样的任务和函数写一个if检查(因为可选的方法导致其他方法返回的值也是可选的),这使得你的代码在没有任何理由的情况下可读性和复杂性变得更低。

成像10

if name?.somefunction() != nil { 
     // do something if it is available 
}else{ 
     // it's not available. Do something appropriate 
} 
+0

'bound'的安全解开的,不可变的值。我的问题是不了解'Optional Binding'是什么。现在完全有意义,非常感谢。 –