Swift学习笔记十二:下标脚本(subscript)

下标脚本就是对一个东西通过索引,快速取值的一种语法,例如数组的a[0]。这就是一个下标脚本。通过索引0来快速取值。在Swift中,我们可以对类(Class)、结构体(structure)和枚举(enumeration)中自己定义下标脚本的语法

一、常规定义

class Student{
    var scores:Int[] = Array(count:5,repeatedValue:0)
    subscript(index:Int) -> Int{
        get{
            return scores[index];
        }
        set{
            scores[index] = newValue
        }
    }
}
var a = Student()
a[0] = 1
a[1] = 2
println("a[0]:\(a[0]),a[1]:\(a[1])”)

重点:

① 下标语法使用subscript关键字来定义

② 下标语法使用get、set来定义读、写属性,并不需要2个属性都有,可以只读

③ 定义set属性时,传入的参数默认名称为newValue。并且newValue的类型和subscript函数返回值相同

二、下标语法参数

下标脚本允许任意数量的入参索引,并且每个入参类型也没有限制。下标脚本的返回值也可以是任何类型。下标脚本可以使用变量参数和可变参数,但使用写入读出(in-out)参数或给参数设置默认值都是不允许的。

class Student{
    var scores:Int[] = Array(count:5,repeatedValue:0)
    subscript(indexs:Int...) -> Int[]{
        get{
            var values:Int[] = Array()
            for index in indexs {
                values.append(scores[index])
            }
            return values
        }
        set{
            var i = 0
            for index in indexs{
                scores[index] = newValue[i++]
            }
        }
    }
}
var a = Student()
a[1,2,3] = [5,6,7]
println(a[0,1,2,3,4])

不过至今还未发现怎么向数组一样可以使用区间类型,比如a[1...3]

Swift学习笔记十二:下标脚本(subscript),布布扣,bubuko.com

时间: 06-16

Swift学习笔记十二:下标脚本(subscript)的相关文章

Swift学习笔记十:属性

1.存储属性       1. 作为特定类或结构实例的一部分,存储属性存储着常量或者变量的值.存储属性可分为变量存储属性(关键字var描述)和常量存储属性(关键字let描述). struct student{ let name = "" var score = 0 } let a = student(name:"小笨狼",score:96)           注意:                ① 定义储存属性时,需要为每一个属性定义一个默认值.在初始化的时候,

虚拟机VMWare学习笔记十二 - 将物理机抓取成虚拟机

1. 安装VMware vCenter Converter Standalone Client 运行虚拟机,File -- Virtualize a Physical Machine 这时如果电脑中没有VMware vCenter Converter Standalone Client ,则会进行安装. 安装过程 之后图标会出现在桌面上,双击运行 选择连接到本地服务器,登陆 点击转换计算机 这个,可以将本地计算机抓取成虚拟机,也可以将其他可以访问的计算机(需知道管理员用户名及密码)抓取成虚拟机.

Swift学习笔记(二十二)——字典的基本操作

(1)计算字典长度 . (2)判断字典是否为空 . (3)查询字典元素 . (4)取出字典元素进行拼接 . (5)字典中插入一个键值对 . (6)字典修改某个键值对 . (7)使用方法更新元素值 . 其实上述方法还有一个返回值: (8)删除字典中的一个元素 版权声明:本文为博主原创文章,未经博主允许不得转载.

Swift学习笔记十六:协议

Protocol(协议)用于统一方法和属性的名称,而不实现不论什么功能. 协议可以被类.枚举.结构体实现.满足协议要求的类,枚举,结构体被称为协议的遵循者. 遵循者须要提供协议指定的成员,如属性,方法,操作符,下标等. 一.协议的基本的语法 咱们还是先上代码吧 protocol Human { var name:String{ get set } var isMan:Bool{set get} class var isUsable:Bool { set get } //类成员.表示这个类是否可用

Swift学习笔记(二)

三 字符串与字符 //1.字符串常量 //在代码中可以使用由String预先定义的字符串常量,定义方式非常简单: let someString = "Some string literal value" //字符串常量可以包括下面这些特殊字符: //空字符\0,反斜杠\,制表符\t,换行符\n,回车符\r,双引号\”和单引号\’ //2.初始化一个空串 //初始化一个空串时有两种形式,但是两种初始化方法的结果都一样,表示空串 var emptyString = ""

Linux学习笔记十二:进程管理

1.查看进程 第一种,用w查看进程: [[email protected] ~]# w 05:22:23 up 14 min, 2 users, load average: 0.00, 0.02, 0.06 USER TTY FROM [email protected] IDLE JCPU PCPU WHAT chenyr tty1 :0 05:08 14:38 2.35s 0.23s pam: gdm-passwo chanshuy pts/0 192.168.230.1 05:09 0.00

Swift学习笔记(二十一)——字典

字典是Swift中除了数组的又一个集合类型.下面来讲解字典的基本概念. var dictionary = [1 : "A" , 2 : "B" , 3 : "C" ] 1)字典存储的数据是键和值的数据对: 2)所存储的数据中,键和值可以是任意数据类型: 3)一个字典只能存储固定一种键和值的数据类型搭配: 4)字典内的数据存放是无序的: 显式定义字典的类型: Dictionary<Int,String> Dictionary<St

OC学习笔记十二 多态

一.多态概念 多态的前提,必须存在继承关系,在代码中的表现形式就是父类类型保存子类类型,即父类的指针指向子类对象. 二.多态特性 在OC中,调用方法是,会检测对象的真实类型,称为动态绑定. 父类保存子类指针,在调用方法时,有以下步骤: 1).在编译的时候,会检查 父类指向子类的指针 调用的方法,在父类中是否存在,如果有,编译通过 2).在运行时,会动态检测 初始对象 的真实类型 三.多态用途 提供动态绑定特性,减少不必要的程序冗余.在方法中,把父类当成参数,使该方法具备调用所有子类同样方法的能力

PHP学习笔记十二【数组排序】

<?php $arr=array(0,5,-1); $temp=0; for($i=0;$i<count($arr)-1;$i++) { for($j=0;$j<count($arr)-1-$i;$j++) { if($arr[$j]>$arr[$j+1]) { $temp=$arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$temp; } } } foreach($arr as $val) { echo "<br>"