 if let aString = optionalString {
     print(aString)
 }
+
+//: In Swift 2 you can also unwrap the optional using guard let.
+//: You can't use guard at the top level of a playground.
+
+func printOptional(optionalString optionalString: String?) -> Void {
+    guard let unwrappedString = optionalString else {
+        print("optionalString is Optional.None \(optionalString)")
+        return
+    }
+    
+    print(unwrappedString)
+}
+
+printOptional(optionalString: optionalString)
+// printOptional(optionalString: .None)
 
 //: After an optional value has been assigned a value you can set it back to nil.
 

let someone = Person(firstName: "Shayleen")

//: So what happens when we try to change the person's name:
someone.firstName = "Katerina"
// someone.lastName = "SemiSerious"
someone.printName()

//: ##### Hey! someone has been declared as a constant but we can change their name.


}

let myCity = City(cityName:"Sheffield", population: 525000)
// var myCity = City(cityName:"Sheffield", population: 525000)
// myCity.name = "Chesterfield"

myCity.printCity()
