zoukankan      html  css  js  c++  java
  • 望其项背 iOS

    项目地址 https://github.com/webabcd/IosDemo
    作者 webabcd

    望其项背 iOS - swift: 方法,下标:实例方法,类方法,self,在方法中修改属性,在方法中为 self 分配一个新的实例,下标 []

    示例如下:

    SwiftView09.swift

    /*
     * 本例用于演示方法,下标
     * 实例方法,类方法,self,在方法中修改属性,在方法中为 self 分配一个新的实例,下标 []
     *
     * [] 是下标运算符(subscript operator)
     */
    
    import SwiftUI
    
    struct SwiftView09: View {
        
        var result: String = ""
        
        init() {
            result = sample1() // 实例方法,类方法,self,在方法中修改属性,在方法中为 self 分配一个新的实例
            result += "
    "
            result += sample2() // 下标 []
            result += "
    "
        }
    
        var body: some View {
            VStack {
                HStack {
                    Text(result)
                    Spacer()
                }
                Spacer()
            }
        }
        
        func sample1() -> String {
            var a = SwiftView09_Struct1()
            
            let b = a.func1()
            let c = a.func2() // 这里要注意一下:因为 func2() 会修改值类型的属性,所以 a 不能是 let 常量
            let d = a.func3()
            
            let e = SwiftView09_Struct1.func4()
            
            return "(b), (c), (d), (e)"
        }
    
        func sample2() -> String {
            var a = SwiftView09_Struct2()
            
            // 设置指定下标的值
            a[100] = "webabcd"
            // 获取指定下标的值
            let b = a[100]
            
            // 下标可以支持多个输入参数
            let c = a[10, 20]
            
            // 类下标
            let d = SwiftView09_Struct2[100]
            
            return "(b), (c), (d)";
        }
    }
    
    struct SwiftView09_Struct1 {
        var name: String = "webabcd"
        
        // 实例方法
        func func1() -> String {
            // self 指的是实例本身(可以省略)
            return self.name
        }
        
        // 如果想在方法中修改属性的话,需要用 immutable 修饰方法,否则编译时报错(Cannot assign to property: 'self' is immutable)
        mutating func func2() -> String {
            self.name = "wanglei" // 可以修改属性了
            return self.name
        }
        
        // 如果想在方法中为 self 分配一个新的实例的话,需要用 immutable 修饰方法,否则编译时报错(Cannot assign to value: 'self' is immutable)
        mutating func func3() -> String {
            self = SwiftView09_Struct1(name: "wangrx") // 可以为 self 分配新的实例了
            return self.name
        }
        
        // 类方法
        static func func4() -> String {
            return "static func"
        }
    }
    
    
    struct SwiftView09_Struct2 {
        private var _dict = [Int : String]()
        // 实例下标,通过 subscript 实现,参见下面的代码
        subscript(index: Int) -> String {
            get {
                return _dict[index] ?? ""
            }
            set (newValue) {
                _dict[index] = newValue
            }
        }
        
        // 下标可以支持多个输入参数
        subscript(rows: Int, columns: Int) -> String {
            get {
                return "rows:(rows), columns:(columns)"
            }
        }
        
        // 类下标
        static subscript(index: Int) -> String {
            return "index: (index)"
        }
    }
    
    

    项目地址 https://github.com/webabcd/IosDemo
    作者 webabcd

  • 相关阅读:
    密码盐 -- 为什么要在密码里加点“盐”
    Linux远程连接ssh工具(FinalShell)xshell替代神器
    模板文件不存在,无法解析文档”的几种解决办法
    9个PNG透明图片免费下载网站推荐
    我最近买的书里面带的CD盘,放电脑里后,说是0字节,但是可以播放,不能把里面的东西复制出来
    ASP程序加密/解密方法大揭密
    最稳定万能vip视频解析接口 支持HTTPS
    pycharm安装pyinstaller将pygame打包成exe
    Arduino101学习笔记(六)—— 高级IO
    Arduino101学习笔记(五)—— 模拟IO
  • 原文地址:https://www.cnblogs.com/webabcd/p/ios_SwiftView09.html
Copyright © 2011-2022 走看看