import UIKit
//结构体里面有函数有属性都可以
struct Student
{
var name = "unknow"
var age = 0
var score = 0.0
var ispass = false
//生成一个static静态的常量,这个常量就不属于任何实例而是属于自己这个结构体
static let schoolName = "家里蹲大学"
init() {
}
init(name:String,age:Int,score:Double) {
self.name = name
self.age = age
self.score = score
if self.score<60 {
self.ispass = false
}else{
self.ispass = true
}
}
// 定义函数
func getName() -> String {
return self.name
}
func getAge() -> Int {
return self.age
}
func getScore() -> Double {
return self.score
}
func getIsPass() -> Bool {
return self.ispass
}
// 在函数中要修改自己结构体中的属性需要加关键字
mutating func setScore(score: Double) {
self.score = score
if score<60 {
self.ispass = false
}else{
self.ispass = true
}
}
}
//这里注意结构体中有多少个init就会出现多少个init的构造方法第一个a就是空的那个init而b就是那个有name有age的
var a = Student()
print(a.name)
var b = Student(name: "小b", age: 18, score: 67)
print("姓名 = " + b.getName())
print("年龄 = " + String(b.getAge()))
print("分数 = " + String(b.getScore()))
print("是否通过考试 = " + String(b.getIsPass()))
print("学校 = " + Student.schoolName)
print("--------------------------------")
b.setScore(score: 10)
print("分数 = " + String(b.getScore()))
print("是否通过考试 = " + String(b.getIsPass()))
struct test1{
var age = 10
}
var t1 = test1()
var t2 = t1
t2.age = 20
print(t2.age)
print(t1.age)
// 发现t2的age和t1的不同不会被关联到
//常量在实例调用修改不能修改
//计算属性
struct Person
{
private var value = ""
var name: String
{
// set这里可以不用写param参数可以直接使用newValue这是set给的一个默认参数
set(param){
print("set - " + param)
}
get{
print("get")
return value
}
}
init() {
}
}
var person = Person()
//设置属性的话就执行set
person.name = "swift"
//取属性的话就执行get
print(person.name)
//如何将这个person结构体里的name变成只读属性那就是删掉set保留get那么他就只能读不能修改
//属性观察willSet未来的值,didSet之前的值
struct sdjf {
var address = ""
var name: String = "unkown"
{
// set的时候获取到的未来的值可以不设参数默认是newValue
willSet{
address = newValue
print("willset - " + newValue)
}
// 获取到之前的值可以不设参数默认是oldValue
didSet(old_Value){
print("didSet - " + old_Value)
}
}
}
//没有初始化器那就有个默认的空init
var personjj = sdjf()
personjj.name = "heloo"
//下标语法
struct Personlll
{
private var array:[String] = ["swift","ios","macos"]
subscript(index: Int) -> String
{
set(new_value){
print("\(index) - " + new_value)
array.insert(new_value, at: index)
// self.array[index] = new_value
}
get{
return array[index]
}
}
}
var personkk = Personlll()
personkk[3] = "hello"
print(personkk[1])
swift---结构体
最新推荐文章于 2021-12-26 22:49:08 发布