美文网首页
2020-11-09结构体struct

2020-11-09结构体struct

作者: 脑子 | 来源:发表于2020-11-09 04:27 被阅读0次

    用struct创建自己的类型

    struct Sports {
        var name: String
    }
    
    var tennis = Sports(name: "网球")
    print(tennis.name)
    
    tennis.name = "🏀"
    print(tennis.name)
    
    //计算属性,olympicStatus这个属性必须通过运行代码来获得值的属性
    struct Sports {
        var name: String
        var isOlympicSport: Bool
        
        var olympicStatus: String {
            if isOlympicSport {
                return "\(name)属于奥林匹克运动。"
            }else {
                return "\(name)不属于奥林匹克运动"
            }
        }
    }
    
    var tennis = Sports(name: "网球", isOlympicSport: true)
    print(tennis.olympicStatus)
    
    //属性观察者
    //我们期望Swift在每一次 amount 改变的时候都打印信息,这里可以用到一个叫 didSet 属性观察者。它可以用于每一次 amount 改变之后运行代码;
    //willSet 的属性观察者。它是在属性改变之前作用
    struct Content {
        var task: String
        var amount: Int {
            didSet {
                print("\(task)已经完成了\(amount)%。")
            }
        }
    }
    
    var content = Content(task: "文件上传", amount: 0)
    content.amount = 30
    content.amount = 60
    content.amount = 100
    
    //方法
    struct City {
        var population: Int
        
        func collectTaxes() -> Int {
            return population * 1000
        }
    }
    
    let hangzhou = City(population: 12_000_000)
    hangzhou.collectTaxes()
    
    //可变方法,当你想要改变属性值时,,需要在方法前使用 mutating 关键字
    struct Person {
        var name: String
        
        mutating func makeAnonymous() {
            name = "匿名用户"
        }
    }
    //由于这个方法改变了属性值,所以Swift只会允许这个方法在变量型的 Person 实例上调用。
    //let person = Person(name: "Yan") 这样就不可以
    var person = Person(name: "Yan")
    person.makeAnonymous()
    
    //String 的属性和方法
    let string = "好好学习,天天享受!abc"
    //.count读取这个字符串里的字符数量,13
    print(string.count)
    //hasPrefix() 方法,可以用来检测字符串是否以特定字符开头,true
    print(string.hasPrefix("好好"))
    //用 uppercased() 方法把一个字符串转换成全大写的版本,好好学习,天天享受!ABC
    print(string.uppercased())
    //将字符串中的字母重新排序成一个数组,["a", "b", "c", "习", "享", "受", "天", "天", "好", "好", "学", "!", ","]
    print(string.sorted())
    
    //数组的属性和方法
    var toys = ["Woody"]
    print(toys.count)
    //增加一个元素,可以使用 append() 方法,["Woody", "Buzz"]
    toys.append("Buzz")
    //用 firstIndex() 方法来定位元素在数组里的位置,0
    toys.firstIndex(of: "Woody")
    //以字母表顺序给数组的元素重新排序,["Buzz", "Woody"]
    print(toys.sorted())
    //移除数组里的一个元素,可以使用 remove(),Woody
    toys.remove(at: 0)
    print(toys)//["Buzz"]
    

    相关文章

      网友评论

          本文标题:2020-11-09结构体struct

          本文链接:https://www.haomeiwen.com/subject/wgwkbktx.html