swift具体解释之八---------------下标脚本
swift具体解释之八—————下标脚本
下标脚本 能够定义在类(Class)、结构体(structure)和枚举(enumeration)这些目标中。能够觉得是訪问对象、集合或序列的快捷方式。不须要再调用实例的特定的赋值和訪问方法 
关键字 subscript 
下标脚本能够设定为 仅仅读 和 读写  相似于getter 和 setter
//语法
subscript(index : Int) ->Int
{
    get{
    }
    set(newValue){
    }
}
以下看一个样例 :
struct  Tables {
    var mul  = 2;
    //仅仅读的下标脚本
    subscript(index :Int)->Int{
        return 2*index
    }
}
let tb = Tables()
print(tb[2]) //4
下标脚本 能够传入多个參数 或者可变类型  。可是inout和默认參数不行 。 
一个类或者结构体中能够有多个下标脚本 能够依据传入的參数类型进行区分
struct Matrix {
    let rows: Int, columns: Int
    var grid: [Double]
    init(rows: Int, columns: Int) {
        self.rows = rows
        self.columns = columns
        grid = Array(count: rows * columns, repeatedValue: 0.0)
    }
    func indexIsValidForRow(row: Int, column: Int) -> Bool {
        return row >= 0 && row < rows && column >= 0 && column < columns
    }
    subscript(row: Int, column: Int) -> Double {
        get {
            assert(indexIsValidForRow(row, column: column), "Index out of range")
            return grid[(row * columns) + column]
        }
        set {
            assert(indexIsValidForRow(row, column: column), "Index out of range")
            grid[(row * columns) + columns] = newValue
        }
    }
}
Matrix提供了一个两个入參的构造方法,入參各自是rows和columns。创建了一个足够容纳rows * columns个数的Double类型数组。
为了存储。将数组的大小和数组每一个元素初始值0.0。都传入数组的构造方法中来创建一个正确大小的新数组
你能够通过传入合适的row和column的数量来构造一个新的Matrix实例:var matrix = Matrix(rows: 2, columns: 2)
上例中创建了一个新的两行两列的Matrix实例。
在阅读顺序从左上到右下的Matrix实例中的数组实例grid是矩阵二维数组的扁平化存储:
示意图 
grid = [0.0, 0.0, 0.0, 0.0]
col0  col1 
row0   [0.0,     0.0, 
    row1    0.0,  0.0] 
将值赋给带有row和column下标脚本的matrix实例表达式能够完毕赋值操作,下标脚本入參使用逗号切割
matrix[0, 1] = 1.5 
matrix[1, 0] = 3.2 
上面两条语句分别让matrix的右上值为 1.5,坐下值为 3.2:
[0.0, 1.5, 
    3.2, 0.0]
这个基本算官方的样例。
学习iOS,有他就够了,小码哥视频,传智、黑马、各种swift书籍
swift具体解释之八---------------下标脚本的更多相关文章
- swift学习笔记之-下标脚本
		
//下标脚本subscript import UIKit /*下标脚本(Subscripts) 下标脚本: 1.可以定义在类(Class).结构体(structure)和枚举(enumeration) ...
 - Swift学习笔记(15)--下标脚本(Subscripts)
		
下标脚本可以定义在类(Class).结构体(structure)和枚举(enumeration)这些目标中,使用中类似数组或者字典的用法 1.定义 定义下标脚本使用subscript关键字,语法: s ...
 - 5.Swift枚举|结构体|类|属性|方法|下标脚本|继承
		
1. 枚举: ->在Swift中依然适用整数来标示枚举值,需搭配case关键字 enum Celebrity{ case DongXie,XiDu,Nandi,BeiGai } // 从左 ...
 - Swift—下标脚本(Subscripts)
		
下标脚本可以定义在类(Class).结构体(Struct).枚举(enumeration)这些目标中,可以认为是访问集合,列表或序列的快捷方式,使用下标脚本的索引设置和获取值,不需要再调用实例的特定的 ...
 - iOS - Swift Subscript		下标脚本
		
1.Subscript 下标脚本允许你通过在实例后面的方括号中传入一个或者多个的索引值来对实例进行访问和赋值.语法类似于实例方法和计算型属性的混合.与定义实例方法类似,定义下标脚本使用 subscri ...
 - Swift枚举|结构体|类|属性|方法|下标脚本|继承
		
1. 枚举: ->在Swift中依然适用整数来标示枚举值,需搭配case关键字 enum Celebrity{ case DongXie,XiDu,Nandi,BeiGai } // 从左 ...
 - Swift的属性,方法,下标脚本以及继承
		
从这篇章节起,Swift编程语言指南大部分的重要内容在于概念,代码并非太多.理解Swift的面向对象理念,语法以及类结构,构造析构过程对于非常好的应用Swift语言将会有比較大的帮助. 属性 存储属性 ...
 - Swift 下标脚本
		
前言 在访问一个数组实例的元素时,可以使用 Array[index] 的形式.在访问一个字典实例的元素时,可以使用 Dictionary[index] 的形式.这种方括号的形式就是 "下标脚 ...
 - Swift - 下标脚本方法介绍及实例
		
定义下标脚本之后,可以使用“[]”来存取数据类型的值. 示例1:实现一个我们自定的字符串类,可以方便的通过索引获取某一个字符值,或某一部分字符串.同时也可以通过索引,给某一部分赋值. 1 2 3 4 ...
 
随机推荐
- DedeCMS搜索结果页面调用自定义字段的方法
			
有时候在我们需要在dedecms的搜索结果页面调用自定义字段,尤其是在做下载站的时候,需要在搜索结果页调用软件大小以及软件等级等等,但是我们发现在搜索结果页模板中使用“[field:字段名]”标签无法 ...
 - SFTP使用key文件登录
			
命令: sftp -oPort= -oIdentityFile=/root/.ssh/user.priv user@39.39.100.100 命令选项: -o ssh_option Can be u ...
 - Python ftplib 模块关于 ftp的下载
			
import ftplib import os import socket import sys HOST='192.168.216.193' DIRN='c:\\ftp\FTP.123' FILE= ...
 - linux下安装jdk跟tomcat
			
文章参考 https://www.cnblogs.com/geekdc/p/5607100.html Linux服务器安装jdk+tomcat https://baijiahao.baidu ...
 - Redis Java调用
			
Redis Java调用 package com.stono.redis; import redis.clients.jedis.Jedis; public class RedisJava { pub ...
 - [Angular] Configure an Angular App at Runtime
			
It always again happens (especially in real world scenarios) that you need to configure your Angular ...
 - Cube Simulation   zoj3429  模拟
			
Description Here's a cube whose size of its 3 dimensions are all infinite. Meanwhile, there're 6 pro ...
 - sas数据导入终极汇总-之中的一个
			
将数据文件读入SAS --DATA Step / PROC IMPORT 1.将SAS文件读入SAS-- data sasuser.saslin; set "F:\sa ...
 - Google代码规范工具Cpplint的使用
			
Cpplint是一个python脚本,Google使用它作为自己的C++代码规范检查工具. 假设你所在的公司也使用Google C++代码规范,那么你有必要了解下Cpplint. 以下说一下Cppli ...
 - An existing connection was forcibly closed by the remote host
			
StackOverflow https://stackoverflow.com/questions/5420656/unable-to-read-data-from-the-transport-con ...