码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-06-18 07:09:30      阅读:209      评论:0      收藏:0      [点我收藏+]

标签: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

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

标签:swift   subscript   下标脚本   

原文地址:http://blog.csdn.net/xbenlang/article/details/31787973

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!