finish structure
This commit is contained in:
parent
10812798ca
commit
719c9426fa
97
Structures.playground/Contents.swift
Normal file
97
Structures.playground/Contents.swift
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
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
|
2
Structures.playground/contents.xcplayground
Normal file
2
Structures.playground/contents.xcplayground
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<playground version='7.0' target-platform='macos' swift-version='6' buildActiveScheme='true' executeOnSourceChanges='true' importAppTypes='true'/>
|
@ -1,6 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Workspace
|
<Workspace
|
||||||
version = "1.0">
|
version = "1.0">
|
||||||
|
<FileRef
|
||||||
|
location = "group:Structures.playground">
|
||||||
|
</FileRef>
|
||||||
<FileRef
|
<FileRef
|
||||||
location = "group:Closures.playground">
|
location = "group:Closures.playground">
|
||||||
</FileRef>
|
</FileRef>
|
||||||
|
Loading…
Reference in New Issue
Block a user