• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

望其项背 iOS - swift: 方法,下标:实例方法,类方法,self,在方法中修改属性,在方 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

示例如下:

SwiftView09.swift

/*
 * 本例用于演示方法,下标
 * 实例方法,类方法,self,在方法中修改属性,在方法中为 self 分配一个新的实例,下标 []
 *
 * [] 是下标运算符(subscript operator)
 */

import SwiftUI

struct SwiftView09: View {
    
    var result: String = ""
    
    init() {
        result = sample1() // 实例方法,类方法,self,在方法中修改属性,在方法中为 self 分配一个新的实例
        result += "\n"
        result += sample2() // 下标 []
        result += "\n"
    }

    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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift学习笔记十三发布时间:2022-07-13
下一篇:
赶时髦过了一遍Swift 语言....发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap