zoukankan      html  css  js  c++  java
  • Swift_类和结构体

    Swift_类和结构体


    点击查看源码

    struct Resolution {
        var width = 0
        var height = 0
    }
    
    class VideoMode {
        var resolution = Resolution()
        var interlaced = false
        var frameRate = 0.0
        var name: String?
    }
    
    ///类和结构体
    class ClassesStructures: NSObject {
        
        func test() {
            //      self.testClassStruct()                            // 类和结构体
            //      self.testStructuresAndEnumerationsAreValueTypes() // 结构体和枚举是值类型
            //      self.testClassesAreReferenceTypes()               // 类是引用类型
            //      self.testIdentityOperators()                      // 恒等算子
        }
        
        //类和结构体测试
        func testClassStruct() {
            //初始化
            let someResolution = Resolution()
            let someVideoMode = VideoMode()
            
            //访问属性
            print("someResolution.width:(someResolution.width)")
            print("someVideoMode.resolution.width:(someVideoMode.resolution.width)")
            someVideoMode.resolution.width = 1280
            print("someVideoMode.resolution.width:(someVideoMode.resolution.width)")
            
            //通过成员初始化结构体
            let vga = Resolution( 640, height: 480)
            print(vga)
            
            /*  print
             
             someResolution.width:0
             someVideoMode.resolution.width:0
             someVideoMode.resolution.width:1280
             Resolution( 640, height: 480)
             
             */
        }
        
        //结构体和枚举是值类型
        func testStructuresAndEnumerationsAreValueTypes() {
            //结构体测试
            let hd = Resolution( 1920, height: 1080)
            var cinema = hd
            cinema.width = 2048 //改变cinema的值 不会改变hd中的值
            print("cinema.width:(cinema.width)")
            print("hd.width:(hd.width)")
            
            //枚举测试
            enum CompassPoint {
                case north, south, east, west
            }
            var currentDirection = CompassPoint.west
            let rememberedDirection = currentDirection
            //改变currentDirection rememberedDirection的值不会变化
            currentDirection = .east
            print("(rememberedDirection)")
            
            /*  print
             
             cinema.width:2048
             hd.width:1920
             west
             
             */
        }
        
        //类是引用类型
        func testClassesAreReferenceTypes() {
            let tenEighty = VideoMode()
            tenEighty.frameRate = 25.0
            // 引用tenEighty到alsoTenEighty 并改变alsoTenEighty中的值
            let alsoTenEighty = tenEighty
            alsoTenEighty.frameRate = 30.0
            print("tenEighty.frameRate:(tenEighty.frameRate)")
            
            /*  print
             
             tenEighty.frameRate:30.0
             
             */
        }
        
        //恒等算子
        func testIdentityOperators() {
            //恒等算子是===或!==
            let tenEighty = VideoMode()
            let alsoTenEighty = tenEighty
            if tenEighty === alsoTenEighty {
                print("相同实例")
            }
            
            /*  print
             
             相同实例
             
             */
        }
    }
    
  • 相关阅读:
    AlwaysOn配置时在连接步骤时报错(35250)
    MongoDB 在系统数据库local上无法创建用户的解决方法
    Elasticsearch 安装操作手册
    SQL Server 数据库调整表中列的顺序操作
    SQL Server 数据库部分常用语句小结(二)
    一个磁盘I/O故障导致的AlwaysOn FailOver 过程梳理和分析
    他人言,以为是,铭记于此。
    MongoDB 基本操作和聚合操作
    MySQL MHA FailOver后,原Master节点自动以Slave角色加入集群的研究与实现
    SQL Sever AlwaysOn的数据同步原理
  • 原文地址:https://www.cnblogs.com/xubaoaichiyu/p/6494207.html
Copyright © 2011-2022 走看看