Up until this point, we have always associated properties with an instance of a struct
. However, it is also possible to define a property that is associated directly with the struct
itself. Such a property is known as a type property.
A type property can be useful in cases where there is some value that we want to be consistent regardless of any instance of our struct
. This might be a constant value, but it can also be a variable. Usually, the value is associated with that type of object for a specific logical or informational reason. For example, Double.pi
is a type property that retrieves the value of pi from the built-in Double
structure in Swift.
Let’s say we want to create a variable type property that stores the value of oldestCat
. It will be updated when a specific cat breaks the age record, but it will hold true across all cats. We define a type property using the static
keyword:
struct Cat { static var oldestCat : Int = 0 }
Since type properties aren’t tied to any instance of the struct
, we use dot syntax on the type itself to access them:
Cat.oldestCat = 38 print(“So far the oldest cat we have seen is \(Cat.oldestCat) years old.”) // Prints: So far the oldest cat we have seen is 38 years old.
Methods can also be declared as static
. These are called on the class, structure, or enumeration itself rather than an instance.
struct Cat { static func displayDescription() { print("Cat's are great pets!") } } Cat.printDescription() // prints Cat's are great pets!
Instructions
Create a variable Int
type property named paperclipSalesRecord
with an initial value of 0.
In the willSet
property observer of paperclipSales
, check if the newValue
is greater than paperclipSalesRecord
. If newValue
is greater, assign it to paperclipSalesRecord
Print the value of paperclipSalesRecord
to the console.