- Swift 4 Programming Cookbook
- Keith Moon
- 258字
- 2021-07-08 10:21:26
How it works...
Defining a struct is very similar to defining an object class, and that is intentional. Much of the functionality available to a class is also available to a struct.
Within the PersonName struct, we have properties for the three components of the name and the fullName method we saw earlier to combine the three name components into a full name string.
Next, we have a method to change the family name property, which is why we defined the familyName property as a var variable instead of a let constant. This method assigns a new value to a property of the struct; it is mutating, or changing, the struct, and therefore needs to be marked with the mutating keyword. This keyword is enforced by the compiler to remind us that when we mutate a struct, a new copy of the original struct is created with the new value. This is known as value-type semantics.
To see this in action, consider the following code:
let alissasBirthName = PersonName(givenName: "Alissa", middleName: "May", familyName: "Jones")
print(alissasName.fullName()) // Alissa May Jones
var alissasCurrentName = alissasBirthName
print(alissasName.fullName()) // Alissa May Jones
So far, so good. We have created a PersonName struct and assigned it to a constant called alissasBirthName and a variable called alissasCurrentName.
When we change or "mutate" the alissasCurrentName variable, only this variable is changed; alissasBirthName is a copy, and so it doesn't have the amended family name, even though they were assigned from the same source:
alissasCurrentName.change(familyName: "Moon")
print(alissasBirthName.fullName()) // Alissa May Jones
print(alissasCurrentName.fullName()) // Alissa May Moon
- C++ Primer習(xí)題集(第5版)
- 案例式C語言程序設(shè)計
- Dynamics 365 Application Development
- PyQt從入門到精通
- Mastering OpenCV 4
- Unity 5.x By Example
- C語言程序設(shè)計學(xué)習(xí)指導(dǎo)與習(xí)題解答
- Getting Started with Gulp
- Learning OpenStack Networking(Neutron)(Second Edition)
- 西門子S7-200 SMART PLC編程從入門到實踐
- OpenResty完全開發(fā)指南:構(gòu)建百萬級別并發(fā)的Web應(yīng)用
- Microsoft Dynamics AX 2012 R3 Financial Management
- C#程序設(shè)計教程(第3版)
- 移動增值應(yīng)用開發(fā)技術(shù)導(dǎo)論
- 軟件測試分析與實踐