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

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

    望其项背 iOS - swift: 泛型(泛型函数,泛型结构体,泛型类,泛型下标,通过 : 实现泛型的类型约束,通过 where 实现泛型的类型约束)

    示例如下:

    SwiftView12.swift

    /*
     * 本例用于演示泛型(泛型函数,泛型结构体,泛型类,泛型下标,通过 : 实现泛型的类型约束,通过 where 实现泛型的类型约束)
     */
    
    import SwiftUI
    
    struct SwiftView12: View {
        
        var result: String = ""
        
        init() {
            result = sample1() // 泛型函数,泛型结构体,泛型类
            result += "
    "
            result += sample2() // 通过 : 实现泛型的类型约束,通过 where 实现泛型的类型约束
            result += "
    "
            result += sample3() // 泛型下标
        }
    
        var body: some View {
            VStack {
                HStack {
                    Text(result)
                    Spacer()
                }
                Spacer()
            }
        }
        
        func sample1() -> String {
            // 泛型函数的使用
            let a = func1(t: "webabcd")
            
            // 泛型结构体(泛型类也是类似的)的使用
            var b = Struct1<String>()
            b.push(t: "webabcd")
            b.push(t: "wanglei")
            
            return "(a), (b.items)"
        }
        // 泛型函数
        func func1<T>(t: T) -> T {
            return t
        }
        // 泛型结构体(泛型类也是类似的)
        struct Struct1<T> {
            var items = [T]()
            mutating func push(t: T) {
                items.append(t)
            }
            
        }
        
        
        func sample2() -> String {
            let a = SwiftView12_Class1()
            let b = func2(a: a)
            let c = func3(a: "webabcd")
    
            return "(b), (c)"
        }
        // 泛型的类型约束(通过 : 实现),泛型结构体和泛型类中的泛型的类型约束也是类似的
        // 类似如下方式约束泛型必须是指定的类型(也可以约束泛型符合某个协议,或同时符合多个协议)
        func func2<T: SwiftView12_Class1>(a: T) -> String {
            return "name:(a.name), age:(a.age)"
        }
        // 泛型的类型约束(通过 where 实现),泛型结构体和泛型类中的泛型的类型约束也是类似的
        // 类似如下方式约束泛型必须实现 Equatable 协议
        func func3<T>(a: T) -> String where T: Equatable {
            return "(a)"
        }
        
        
        func sample3() -> String {
            let a = SwiftView12_Class1()
            // 泛型下标的使用
            let b = SwiftView12_Struct1[a]
            
            return "(b)"
        }
    }
    
    
    class SwiftView12_Class1 {
        var name: String = "webabcd"
        var age: Int = 40
    }
    
    struct SwiftView12_Struct1 {
        // 泛型下标(约束了泛型 T 必须是 SwiftView12_Class1 类型)
        static subscript<T: SwiftView12_Class1>(a: T) -> String {
            get {
                return a.name
            }
        }
    }
    
    

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

  • 相关阅读:
    Redis和Memcache的区别分析
    javascript 与jquery为每个p标签增加onclick方法
    repeater单双行颜色不同,gridview repeater DataList 鼠标经过改变背景颜色
    sql 错误提示
    .net获取select控件中的文本内容
    您试图从目录中执行CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序
    html5 调用摄像头
    openfire配置MSSQL说明(数据库设置)
    Openfire 的安装和配置
    JS 等前端学习。
  • 原文地址:https://www.cnblogs.com/webabcd/p/ios_SwiftView12.html
Copyright © 2011-2022 走看看