swift2.0 学习笔记nine

struct TimesTable {

    let mult :Int

    subscript(index:Int)->Int{

        return mult * index

    }

}

struct Matrix {

    let rows:Int, colums:Int

    var grid : [Double]

    init(rows:Int,colums:Int){

        self.rows=rows;

        self.colums=colums;

        grid=Array(count: rows * colums, repeatedValue: 0.0)

    }

    func indexIsValidForRow(row :Int,column:Int)->Bool{

        return row >= 0 && row < rows && column >= 0 && column < colums

    }

    subscript(row:Int, colum:Int)->Double{

        get {

            assert(indexIsValidForRow(row, column: colum), "Index out of range")

            return grid[(row * colums)+colum]

        }

        set{

             assert(indexIsValidForRow(row, column: colum), "Index out of range")

            grid[(row * colums)+colum]=newValue

        }

    }

}

class ViewController: UIViewController {

    

    override func viewDidLoad() {

        super.viewDidLoad()

      //下标脚本

      //下标脚本可以定义在类、结构体和枚举这些目标中,可以认为是访问集合列表或序列的快捷方式,使用下脚标的索引设置和获取值,不需要再调用实例的特定的赋值和访问方法。比如访问字典实例中的元素可以是someDic[key]

     //与定义实例方法类似,定义下标脚本使用subscript关键字,显示声明入参(一个或多个)和返回类型,与实例方法不同的是下标脚本可以设定为读写或只读。

        let threetimesTable=TimesTable(mult: 3);

        print("36倍是\(threetimesTable [6])")//36倍是18

        

    //下标脚本用法

        //根据使用场景的不同下标脚本也具有不同的含义。通常下标脚本是用来访问集合、列表或序列中元素的快捷键方式。可以在自己特定的类或结构体中自由的实现下标脚本本来提供合适的功能

        var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]

        numberOfLegs["bird"] = 2

        

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

        var matrix = Matrix(rows: 2, colums: 2)

        print(matrix.grid);//[0.0, 0.0, 0.0, 0.0]

        matrix[0,1]=1.5

        matrix[1,0]=3.5

        print(matrix.grid);//[0.0, 1.5, 3.5, 0.0]

        

        

    }

}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值