Swift学习笔记12——下标(Subscripts)

所谓的下标,就是[]。在Array和Dictionary的时候就已经接触过了。它其实算一种特殊的方法,利用下标,我们可以将属性的getter和setter写在一起。而且还可以提供另外的一些功能。

还记得String截串的时候无比麻烦吗?利用下标和扩展(Extension)封装后变得很简单。这个在讲到扩展的时候在写出来吧。

下标语法

subscript(index: Int) -> Int {
    get {
        // return an appropriate subscript value here
    }
    set(newValue) {
        // perform a suitable setting action here
    }
}

当然可以和计算属性一样将setter删去,变为只读。

下面举一个使用例子。假设在买橙子。下标表示你要买多少斤,下标能返回总共价格。 当对下标赋值的时候,表示买那么多斤的时候总共花了多少钱。然后修改了橙子的单价.

下标不止一个变量,还可以有多个变量。变量也可以是不同的类型。

class Orange {
    var pricePerKg: Double = 3
    subscript(kg: Double, str: String) -> Double {
        get{
            print(str)
            return kg * pricePerKg
        }
        set{
            print(str)
            self.pricePerKg = newValue / kg
        }
    }
}

var o = Orange()
print("price of 10kg orange ",o[10,"buy 10 kg orange"])
o[100,"buy 100kg orange"] =  250
print("price per kg when buying 100kg orange ",o.pricePerKg)
//打印
//buy 10 kg orange
//price of 10kg orange  30.0
//buy 100kg orange
//price per kg when buying 100kg orange  2.5


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值