Representing the absence of values with optionals
Let's go back to the past and see how the absence of a value is represented in Objective-C, as an example. There isn't a standard solution for representing the absence of a value for both reference and simple value types. There are two different ways:
nil
0
,-1
,INT_MAX
,NSNotFound
, and so on
For reference types, Objective-C uses the nil
value to represent that a variable doesn't have a value. It points to nowhere.
For value types, there is no such value as nil
and it is not possible to assign nil
to an integer variable. To do that, Objective-C (and not only Objective-C but also C, Java, and many other languages) uses a few special values that are unlikely to be the result of a particular operation. For example, the indexOfObject
method of NSArray
would return NSNotFound
.
Note
NSNotFound
is just a constant and its value is equal to NSIntegerMax
, whose value, in turn, is 2147483647
.
Swift uses an optional to represent the absence...