98 lines
1.7 KiB
Swift
98 lines
1.7 KiB
Swift
import Foundation
|
|
|
|
// structure is a value type
|
|
|
|
struct Person {
|
|
let name: String
|
|
let age: Int
|
|
}
|
|
|
|
let foo = Person(name: "foo", age: 20)
|
|
|
|
foo.name
|
|
foo.age
|
|
|
|
struct CommodorComputer {
|
|
let name: String
|
|
let manufacturer: String = "Commodor"
|
|
|
|
// constructor
|
|
// init(name: String) {
|
|
// self.name = name
|
|
// self.manufacturer = "Commodor"
|
|
// }
|
|
}
|
|
|
|
|
|
let c64 = CommodorComputer(name: "Test")
|
|
|
|
c64.manufacturer
|
|
|
|
|
|
// Compute property
|
|
struct Person2 {
|
|
let firstName: String
|
|
let lastName: String
|
|
// let fullName: String
|
|
|
|
// init(firstName: String, lastName: String) {
|
|
// self.firstName = firstName
|
|
// self.lastName = lastName
|
|
// self.fullName = "\(firstName) \(lastName)"
|
|
// }
|
|
|
|
var fullName: String {
|
|
"\(firstName) \(lastName)"
|
|
}
|
|
}
|
|
|
|
let fooBar = Person2 (firstName: "Gary", lastName: "Gan")
|
|
|
|
fooBar.fullName
|
|
|
|
struct Car {
|
|
var currentSpeed: Int
|
|
|
|
mutating func drive(speed: Int) {
|
|
"Driving..."
|
|
currentSpeed = speed
|
|
}
|
|
}
|
|
|
|
let immutableCar = Car(currentSpeed: 10)
|
|
// !immutableCar.drive(speed: 20)
|
|
|
|
var mutableCar = Car(currentSpeed: 10)
|
|
mutableCar.drive(speed: 30)
|
|
mutableCar.currentSpeed
|
|
|
|
let copy = mutableCar
|
|
mutableCar.drive(speed: 40)
|
|
mutableCar.currentSpeed
|
|
copy.currentSpeed
|
|
|
|
struct LivingThing {
|
|
init() {
|
|
"I'm living"
|
|
}
|
|
}
|
|
|
|
//struct Animal: LivingThing {
|
|
//
|
|
//}
|
|
|
|
struct Bike {
|
|
let manufacturer: String
|
|
let currentSpeed: Int
|
|
|
|
func copy(currentSpeed: Int) -> Bike {
|
|
Bike (manufacturer: self.manufacturer, currentSpeed: currentSpeed)
|
|
}
|
|
}
|
|
|
|
let bike1 = Bike(manufacturer: "HD", currentSpeed: 20)
|
|
|
|
var bike2 = bike1.copy(currentSpeed: 40)
|
|
bike1.currentSpeed
|
|
bike2.currentSpeed
|