zoukankan      html  css  js  c++  java
  • 下标的使用

    类,结构和枚举类型都可以通过定义下标来访问一组或者一个序列中的成员元素。通过下标索引就可以方便地检索和设置相应的值,而不需要其他的额外操作。

    比如你可以通过someArray[index]来访问数组中的元素,或者someDictionary[key]来对字典进行索引。

    你可以为一个类型定义多个下标,以及适当的下标重载用来根据传递给下标的索引来设置相应的值。下标不仅可以定义为一维的,还可以根据需要定义为多维的,多个参数的。

    下标可以让你通过实例名后加中括号内一个或多个数值的形式检索一个元素。语法和方法语法和属性语法类似,通过使用subscript关键定义,一个或多个输入参数以及一个返回值。

    不同于实例方法的是,下标可以是可读写的或者只读的。这种行为通过一个getter和setter语句联通,就像是计算属性一样。

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    /*
    下标:
    1.所有的swift类型(枚举, 类和结构体)都支持定义下标
    2.同一个类型可以定义多个下标
    3.通过下标的形参列表或者返回值类型来区分不同的下标
    4.同一类型中定义多个不同的下标被称为下标重载
    */
    
    class Person
    {
        var x:Int?
        var y:Int?
        var Int?
        var height:Int?
        
        // 通过下标进行访问时会调用
        // 形参列表, 与参数的形参列表的用法基本相同, 但是不支持指定外部参数和默认值
        // 下标的返回值类型可以是任何有效的类型
        subscript (index: Int) -> Int {
            get{
                switch index {
                case 0:
                    return self.x!
                case 1:
                    return self.y!
                case 2:
                    return self.width!
                case 3:
                    return self.height!
                default:
                    return 0
                }
            }
            
            // 通过下标进行设置时会调用
            set(newValue){
                switch index {
                case 0:
                    self.x = newValue
                case 1:
                    self.y = newValue
                case 2:
                    self.width = newValue
                case 3:
                    self.height = newValue
                default:
                    break
                }
            }
        }
        
        subscript(stringNameKey: String) -> Int? {
            get {
                switch stringNameKey {
                case "x":
                    return self.x!
                case "y":
                    return self.y!
                case "y":
                    return self.width!
                case "y":
                    return self.height!
                default:
                    return nil
                }
            }
        }
    }
    
    var p = Person()
    p.x = 1
    p.y = 2
    p.width = 3
    p.height = 4
    // 通过下标访问属性
    p[0]
    // 通过下标修改属性
    p[1] = 11111
    p.y
    p["x"]
    p["y"]
    

      

  • 相关阅读:
    Mysql 5.6 源码编译安装
    Python中的数据类型之字符串
    Python中变量的命名与使用(个人总结)
    Windows环境下python3.7版本怎么安装pygame
    web应用无法访问的原因之一以及如何设置数据库编码
    项目代码设计规范总结之分页查询
    当java web项目部署到服务器上时,无法将图片等媒体文件保存到服务器的最终奥义
    如何查看服务器上打印的信息
    java代码实现JVM栈溢出,堆溢出
    springmvc源码分析(转)
  • 原文地址:https://www.cnblogs.com/Rinpe/p/5182151.html
Copyright © 2011-2022 走看看