swift基础-16-subscripts下标

subscripts(下标): 访问对象中数据的快捷方式
所谓下标脚本语法就是能够通过, 实例[索引值]来访问实例中的数据
类似于以前我们访问数组和字典, 其实Swift中的数组和字典就是一个结构体

Array:      subscript (index: Int) -> T
Dictionary: subscript (key: Key) -> Value?
arr[0] == arr.subscript(0)
dict["key"] == dict.subscript("key")
struct Student {
    var name:String = "solozyx"
    var math:Double = 99.0
    var chinese:Double = 99.0
    var english:Double = 99.0
    
    func score(course:String) ->Double?
    {
        switch course{
        case "math":
            return math
        case "chinese":
            return chinese
        case "english":
            return english
        default:
            return nil
        }
    }
    // 要想实现下标访问, 必须实现subscript方法
    // 如果想要通过下标访问, 必须实现get方法
    // 如果想要通过下标赋值, 必须实现set方法
    subscript(course:String) ->Double?{
        get{
            switch course{
            case "math":
                return math
            case "chinese":
                return chinese
            case "english":
                return english
            default:
                return nil
            }
        }
        set{
            switch course{
            case "math":
                // 因为返回的是可选类型
                math = newValue!
            case "chinese":
                chinese = newValue!
            case "english":
                english = newValue!
            default:
                print("not found")
            }
        }
    }
}

var stu = Student(name: "zs", math: 99.0, chinese: 88.0, english: 10.0) // Student
print(stu.score("math")) // "Optional(99.0)\n"
stu["chinese"] = 100.0 // 100
print(stu["chinese"]) // "Optional(100.0)\n"

Swift中是允许多索引的下标的

struct Mul {
    subscript(a:Int, b:Int) -> Int
    {
            return a * b
    }
}
var m = Mul() // Mul
print(m[3, 5]) // "15\n"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 9,435评论 1 10
  • Swift属性 Swift属性将值跟特定的类,结构体,枚举关联。分为存储属性和计算属性,通常用于特定类型的实例。属...
    小小厨师阅读 4,359评论 0 0
  • 53.计算字符 在字符串中获取字符值的数量, 可以使用字符串字符属性中的计数属性: let unusualMena...
    无沣阅读 4,836评论 0 4
  • 前言 3月27号苹果发布了Swift3.1,官方教程也更新到了3.1,查看更新记录发现更新的内容对之前的文章并没有...
    BoomLee阅读 8,332评论 0 4
  • 数据类型 内置数据类型 Swift 提供了非常丰富的数据类型,以下列出了常用了集中数据类型: Int 一般来说,你...
    阳明先生1208阅读 1,384评论 0 0