Swift—下标-备
看下面的示例代码是不是使用过:
- var studentList: String[] = ["张三","李四","王五"]
- studentList[0] = "诸葛亮"
- var studentDictionary = [102: "张三",105: "李四", 109: "王五"]
- studentDictionary[110] = "董六"
在访问数组和字典的时候,可以采用下标访问。其中数组的下标是整数类型索引,字典的下标是它的“键”。
下标
Swift中的下标相当于Java中的索引属性和C#中的索引器。
下标访问的语法格式如下:
- <span style="font-family:Courier;color:windowtext;font-size: 8pt; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt;"><span style="font-family:宋体;">面</span></span>向对象类型 类型名 {
- 其他属性
- ...
- subscript(参数: 参数数据类型) -> 返回值数据类型 {
- get {
- return 返回值
- }
- set(新属性值) {
- ...
- }
- }
- }
下标也有类似于计算属性的getter和setter访问器。
getter访问器是一个方法,在最后使用return语句将计算结果返回。
setter访问器“新属性值”是要赋值给属性值。参数的声明可以省略,系统会分配一个默认的参数newValue。
示例:二维数组
在Swift中没有提供二维数组,只有一维数组Array。可以自定义一个二维数组类型,然后通过两个下标参数访问它的元素,形式上类似于C语言的二维数组。
采用下标的二维数组示例代码如下:
- struct DoubleDimensionalArray { //定义了二维数组结构体
- let rows: Int, columns: Int //存储属性rows和columns
- var grid: [Int]
- init(rows: Int, columns: Int) { //构造函数
- self.rows = rows
- self.columns = columns
- grid = Array(count: rows * columns, repeatedValue: 0) //初始化存储属性grid
- }
- subscript(row: Int, col: Int) -> Int { //定义下标
- get {
- return grid[(row * columns) + col]
- }
- set (newValue1){
- grid[(row * columns) + col] = newValue1
- }
- }
- }
- var ary2 = DoubleDimensionalArray(rows: 10, columns: 10) //创建并初始化10×10大小的二维数组
- //初始化二维数组
- for var i = 0; i < 10; i++ {
- for var j = 0; j < 10; j++ {
- ary2[i,j] = i * j
- }
- }
- //打印输出二维数组
- for var i = 0; i < 10; i++ {
- for var j = 0; j < 10; j++ {
- print("\t \(ary2[i,j])")
- }
- print("\n")
- }
输出结果如下:
0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9
0 2 4 6 8 10 12 14 16 18
0 3 6 9 12 15 18 21 24 27
0 4 8 12 16 20 24 28 32 36
0 5 10 15 20 25 30 35 40 45
0 6 12 18 24 30 36 42 48 54
0 7 14 21 28 35 42 49 56 63
0 8 16 24 32 40 48 56 64 72
0 9 18 27 36 45 54 63 72 81
Swift—下标-备的更多相关文章
- Swift—下标脚本(Subscripts)
下标脚本可以定义在类(Class).结构体(Struct).枚举(enumeration)这些目标中,可以认为是访问集合,列表或序列的快捷方式,使用下标脚本的索引设置和获取值,不需要再调用实例的特定的 ...
- Swift下标
还记得字典吗? var numberOfLegs= ["spider": 8,"ant": 6, "cat":4] numberOfLegs ...
- Swift: 下标(Subscripts)
类.结构体.枚举都可以定义下标(subscript),下标是访问集合.列表.序列的元素的快捷方式. 在Swift中可以为类型定义下标,而且不限于一维. 语法 下标定义的方法:跟实例方法的语法类似,su ...
- Swift 下标脚本
前言 在访问一个数组实例的元素时,可以使用 Array[index] 的形式.在访问一个字典实例的元素时,可以使用 Dictionary[index] 的形式.这种方括号的形式就是 "下标脚 ...
- Swift—重写-备
========================= 重写实例属性 我们可以在子类中重写从父类继承来的属性,属性有实例属性和静态属性之分,他们在具体实现也是不同的. 实例属性的重写一方面可以重写gett ...
- Swift—析构函数-备
与构造过程相反,实例最后释放的时候,需要清除一些资源,这个过程就是析构过程.在析构过程中也会调用一种特殊的方法deinit,称为析构函数.析构函数deinit没有返回值,也没有参数,也不需要参数的小括 ...
- Swift—静态方法-备
静态方法与静态属性类似,Swift中定义了静态方法,也称为类型方法.静态方法的定义与静态属性类似,枚举和结构体的静态方法使用的关键字是static:类静态方法使用的关键字是class或static,如 ...
- swift闭包-备
我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式.函数参数和函数返回值,闭包表达式的运算结果是一种函数类型. Swift中的闭包类似于Objective-C中的代码块.J ...
- Swift - 下标脚本方法介绍及实例
定义下标脚本之后,可以使用“[]”来存取数据类型的值. 示例1:实现一个我们自定的字符串类,可以方便的通过索引获取某一个字符值,或某一部分字符串.同时也可以通过索引,给某一部分赋值. 1 2 3 4 ...
随机推荐
- OpenStack入门之初步认识
一.OpenStack 入门 之 基础知识 二.OpenStack 入门 之 基本组件 三.OpenStack 入门 之 各组件解析(基础) 四.OpenStack 入门 之 各组件解析(进阶) 五. ...
- ActionScript通用开发框架
ActionScript 3(简称as)自2006年诞生以来,出现了一大批很优秀框架.就我的知识领域,运用包括pureMVC.pushButton Engine(组件框架).Robotlegs.Ash ...
- 再探java基础——零碎基础知识整理
1.java是解释型语言.java虚拟机能实现一次编译多次运行. 2.JDK(java software Development kit 软件开发包),JRE(java Runtime Environ ...
- java中基于TaskEngine类封装实现定时任务
主要包括如下几个类: 文章标题:java中基于TaskEngine类封装实现定时任务 文章地址: http://blog.csdn.net/5iasp/article/details/10950529 ...
- 配置WifiConfiguration
public WifiConfiguration CreateWifiInfo(String SSID, String Password, int Type) { WifiConfiguration ...
- ubuntu安装kvm流程
1. 查看CPU的虚拟化支持~ egrep 'svm|vmx' /proc/cpuinfo #查看是否有内容输出 2. 更新源~ sudo apt-get update 安装KVM及virt管理软件~ ...
- MVC4建立DBContext的EF6数据
MVC4建立DBContext的EF6数据时 1.需要using System.Data.Entity;命名空间 2.此命名空间需要安装EntityFromwork.dll,此dll可以在项目——&g ...
- zendstudio正则匹配查询
Ctrl+H之后,显示的File Search标签页为Containing text. Alt+/ 帮助提示正则匹配的语法. 例子如下: select type from table where id ...
- JQuery图片轮换 nivoSlider图片轮换
效果图: 第一步:添加引用 <script src="jquery-ui-1.9.2.custom.min.js" type="text/javascript&qu ...
- ajax调用webservice(二) 跨域。
所需工具与项目结构同(一). service.asmx中代码如下: using System; using System.Collections.Generic; using System.Web; ...