/*

subscripts(下标): 访问对象中数据的快捷方式

所谓下标脚本语法就是能够通过, 实例[索引值]来访问实例中的数据

类似于以前我们访问数字和字典, 其实Swift中的数组和字典就是一个结构体

Array:      subscript (index: Int) -> T

Dictionary: subscript (key: Key) -> Value?

arr[0] == arr.subscript(0)

dict["key"] == dict.subscript("key")

*/

struct Student {

var name: String = "HaRi"

var math: Double = 98.0

var chinese: Double = 99.0

var english: Double = 100.0

func score(course: String) -> Double

{

switch course {

case "math":

return math

case "chinese":

return chinese

case "english":

return english

default:

return math + chinese + english // 此处待探究为何返回nil就会爆红

}

}

//1.要想实现下标访问, 必须实现subscript方法;

//2.要想通过下标访问, 必须实现get方法;

//3.要想通过下标赋值, 必须实现set方法.

subscript(course: String) -> Double?{

get{

switch course {

case "math":

return math

case "chinese":

return chinese

case "english":

return english

default:

return math + chinese + english

}

}

set{

switch course{

case "math":

//以为返回的是可选类型

math = newValue!

case "chinese":

chinese = newValue!

case "english":

english = newValue!

default:

print("not found")

}

}

}

}

var stu = Student(name: "han", math: 99.0, chinese: 98.0, english: 57.0)

print(stu.score(course: "english"))

stu["math"] = 100.0

print(stu["math"]!)

/** Swift中是允许多索引的下标的 **/

struct Mul {

subscript(a: Int, b: Int) -> Int

{

return a + b

}

}

var m = Mul()

print(m[10,20])

subscripts(下标)的更多相关文章

  1. 【Swift学习】Swift编程之旅---Subscripts下标(十六)

    类.结构体和枚举可以定义下标,他可以快速简单地访问集合(set,array,dict)的元素,你可以使使用下标来获取和设置集合元素. 你可以定义一个类型的多个下标,通过索引值类型的不同来进行重载,而且 ...

  2. 【Swift学习】Swift编程之旅---继承(十七)

    在 Swift 中,继承是区分「类」与其它类型的一个基本特征.swift不支持多重继承.类可以调用和访问超类的方法,属性和subscripts下标,并且可以重写(override)这些方法,属性和附属 ...

  3. JavaScript- The Good Parts Chapter 6

    Thee(你) I’ll chase(追逐:追捕) hence(因此:今后), thou(你:尔,汝) wolf in sheep’s array.—William Shakespeare, The ...

  4. 初学swift笔记 方法(九)

    import Foundation /* 方法 */ //实例方法 一定需要依附于对象 class MyPoint { var x: Double = 0.0 var y: Double = 0.0 ...

  5. Swift 常用字符串操作

    原文链接:http://www.jianshu.com/p/52e7580166ff 版本2:增加了Swift 2.0的语法,与Swift 1.2的语法相比,主要是:advance方法变成了advan ...

  6. Swift—下标脚本(Subscripts)

    下标脚本可以定义在类(Class).结构体(Struct).枚举(enumeration)这些目标中,可以认为是访问集合,列表或序列的快捷方式,使用下标脚本的索引设置和获取值,不需要再调用实例的特定的 ...

  7. Swift: 下标(Subscripts)

    类.结构体.枚举都可以定义下标(subscript),下标是访问集合.列表.序列的元素的快捷方式. 在Swift中可以为类型定义下标,而且不限于一维. 语法 下标定义的方法:跟实例方法的语法类似,su ...

  8. Swift学习笔记(15)--下标脚本(Subscripts)

    下标脚本可以定义在类(Class).结构体(structure)和枚举(enumeration)这些目标中,使用中类似数组或者字典的用法 1.定义 定义下标脚本使用subscript关键字,语法: s ...

  9. Swift3.0P1 语法指南——下标

    原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...

随机推荐

  1. SQLALchemy--ORM框架

    SQLAlchemy 1.介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用 ...

  2. redis学习-有序集合(zset)常用命令

    zadd:有序集合增加一个或者多个键值对 与set集合不同,zset添加的时候需要 指定 score,这个是用来排名的 zrange:返回指定范围的键 zcount:返回集合指定范围的个数(以每个键值 ...

  3. Java编程模板

    package Campus; import java.util.Scanner; public class Main{ public static void main(String args[]){ ...

  4. android public.xml 用法

    一.android的pulibc.xml文件 如果你用 apktoool 反编译过 apk 就知道,反编译后res/values 下有一个 public.xml 文件,内容如图   这个东西有什么用呢 ...

  5. C++中的结构体的认识

    C++中的结构体的认识 1. typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间. 实例像:typedef ...

  6. lock wait timeout exceeded; try restarting transactio解决方案

    问题原因:       今天线上环境,突然出现一个问题,追踪原因是数据库中的一条语句报错,错误内容:lock wait timeout exceeded; try restarting transac ...

  7. hdu 4995 离线处理+模拟

    http://acm.hdu.edu.cn/showproblem.php?pid=4995 给定一维坐标下的n个点,以及每个点的权值,有m次查询,每次将查询的x点上的权值修改为离x最近的k个点权值的 ...

  8. 1028. Hanoi Tower Sequence

    1028. Hanoi Tower Sequence Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description Hanoi Tow ...

  9. 【WinRT】TransitionDemo

    折腾了一晚,将 WinRT 里的所有 Transition 做了一个小 Demo,用于演示各个 Transition 的效果. PS:NavigationThemeTransition 请参考:htt ...

  10. lr中错误解决方法19种

    一.Error -27727: Step download timeout (120 seconds)has expired when downloading resource(s). Set the ...