Swift also introduces Optionals type, which handles the
absence of a value. Optionals say either "there is a value, and it
equals x" or "there isn't a value at all".
An Optional is a type on its own, actually one of Swift’s new super-powered enums. It has two possible values, None and Some(T), where T is an associated value of the correct data type available in Swift.
Here’s an optional Integer declaration −
Let's take a simple example −
An optional binding for the if statement is as follows −
An Optional is a type on its own, actually one of Swift’s new super-powered enums. It has two possible values, None and Some(T), where T is an associated value of the correct data type available in Swift.
Here’s an optional Integer declaration −
var perhapsInt: Int?Here’s an optional String declaration −
var perhapsStr: String?The above declaration is equivalent to explicitly initializing it to nil which means no value −
var perhapsStr: String? = nilLet's take the following example to understand how optionals work in Swift −
import Cocoa var myString:String? = nil if myString != nil { println(myString) }else { println("myString has nil value") }When we run the above program using playground, we get the following result −
myString has nil valueOptionals are similar to using nil with pointers in Objective-C, but they work for any type, not just classes.
Forced Unwrapping
If you defined a variable as optional, then to get the value from this variable, you will have to unwrap it. This just means putting an exclamation mark at the end of the variable.Let's take a simple example −
import Cocoa var myString:String? myString = "Hello, Swift!" if myString != nil { println(myString) }else { println("myString has nil value") }When we run the above program using playground, we get the following result −
Optional("Hello, Swift!")Now let's apply unwrapping to get the correct value of the variable −
import Cocoa var myString:String? myString = "Hello, Swift!" if myString != nil { println( myString! ) }else { println("myString has nil value") }When we run the above program using playground, we get the following result −
Hello, Swift!
Automatic Unwrapping
You can declare optional variables using exclamation mark instead of a question mark. Such optional variables will unwrap automatically and you do not need to use any further exclamation mark at the end of the variable to get the assigned value. Let's take a simple example −import Cocoa var myString:String! myString = "Hello, Swift!" if myString != nil { println(myString) }else { println("myString has nil value") }When we run the above program using playground, we get the following result −
Hello, Swift!
Optional Binding
Use optional binding to find out whether an optional contains a value, and if so, to make that value available as a temporary constant or variable.An optional binding for the if statement is as follows −
if let constantName = someOptional { statements }Let's take a simple example to understand the usage of optional binding −
import Cocoa var myString:String? myString = "Hello, Swift!" if let yourString = myString { println("Your string has - \(yourString)") }else { println("Your string does not have a value") }When we run the above program using playground, we get the following result −
Your string has - Hello, Swift!
No comments:
Post a Comment