import Foundation
/*
方法
*/
//实例方法 一定需要依附于对象 class MyPoint {
var x: Double = 0.0
var y: Double = 0.0
//类中的内部方法 第一个参数默认没有外部参数名,从第二个以后开始,方法名作为外部参数名 既作为内部参数又做为外部参数
//实例方法
func set(_x: Double,_y: Double) {
x = _x
y = _y
}
//实例方法
func show() {
println("x:\(x) y\(y)")
}
}
func set(_x: Double,_y: Double) { } var p0 = MyPoint()
p0.set(, _y: )
p0.show()
set(, ) //结构体中的mutating方法
struct MyPoint_1 {
var x : Double =
var y : Double =
//结构体和枚举 值类型不可以直接修改其内的变量值,如果要修改,需要在方法前加关键字 mutating
mutating func set(x : Double,y : Double) {
self.x = x
self.y = y }
func show() {
println("x:\(self.x) y:\(self.y) ")
} }
//枚举中可以写方法,但枚举中不能有存储属性,可以有计算属性
enum LightSwitch {
case OFF,ON,HIGH
mutating func next() {
switch self {
case .OFF:
self = ON
case .ON:
self = OFF
case .HIGH:
self = OFF }
} }
var p1 = MyPoint_1()
p1.show() var light = LightSwitch.OFF
println(light.hashValue)
light.next()
println(light.hashValue) /*
类型方法 静态方法
通过类名+方法名来调用
与static静态方法相似,该方法为所有对象共用
*/
struct MyPoint_2 {
var p: Int =
static var sp: Int =
func getvalue() {
println("p:\(p) sp:\(MyPoint_2.sp)")
}
//静态方法不能够访问非静态变量
static func static_getvalue() {
// println("p:\(p) sp:\(MyPoint_2.sp)")
println("sp:\(MyPoint_2.sp)") } }
struct MyPoint_3 {
var p: Int =
static var sp: Int =
func getvalue() {
println("p:\(p) sp:\(MyPoint_3.sp)")
}
//静态方法不能够访问非静态变量
static func static_getvalue() {
// println("p:\(p) sp:\(MyPoint_3.sp)")
println("sp:\(MyPoint_3.sp)") } }
var m2 = MyPoint_2()
m2.getvalue()
MyPoint_2.static_getvalue() var m3 = MyPoint_3()
m3.getvalue()
MyPoint_3.static_getvalue() /*
subscripts 下标 访问对象中数据的快捷方式
实例[索引值]
*/
let array = [,,,,,,]
println(array[]) //实例对象[索引] struct student {
var name : String = ""
var math : Int
var english : Int
var chinese : Int
func scoreOf(course : String) -> Int? {
switch course {
case "math":
return math
case "chinese":
return chinese
case "english":
return english
default:
return nil
}
}
//制作下标方法
/*
subscript (course : String) -> Int? {
switch course {
case "math":
return math
case "chinese":
return chinese
case "english":
return english
default:
return nil
}
}
*/
//或者这么写
subscript (course : String) -> Int? {
get{
switch course {
case "math":
return math
case "chinese":
return chinese
case "english":
return english
default:
return nil
}
}
set{
switch course {
case "math":
math = newValue!
case "chinese":
chinese = newValue!
case "english":
english = newValue!
default:
println("set error")
}
}
} }
var li = student(name: "lisi", math: , english: , chinese: )
println(li.scoreOf("math"))
println(li["math"])//下标访问
li["math"] = //下标赋值
println(li["math"])//下标访问 //下标多索引
struct Mul {
subscript (a: Int,b: Int) -> Int {
return a*b
}
}
var mul = Mul()
println(mul[,])
 

初学swift笔记 方法(九)的更多相关文章

  1. swift 笔记 (十九) —— 协议

    协议(Protocols) 协议仅是用定义某些任务或者是功能必须的方法和属性. 类似于java里的interface的作用.但协议并不会实现详细的功能. 我猜这个名字源于OO中提到的"契约& ...

  2. 初学swift笔记 结构体(八)

    import Foundation /* 和类很相似 结构体 -> 封装 属性.方法 结构体是值类型 */ //定义一个LSQ类型的结构体 关键字struct struct LSQ { var ...

  3. 初学swift笔记 继承(十)

    import Foundation /* 继承 class childClass: FatherClass{ } 优点 代码重用 缺点 增加程序的藕合度 父类的改变会影响子类 只能单继承 */ cla ...

  4. 初学swift笔记 枚举(七)

    import Foundation /* 枚举 语法结构 enum 类型 { case 值 } */ //定义一个枚举 写法1 enum LiuShiQun { case Name case Age ...

  5. 初学swift笔记运算符(二)

    swift 中的运算符 import Foundation //字符类型 var char: Character = "a" char="b" println( ...

  6. 初学swift笔记变量的定义(一)

    swift变量的定义 1 import Foundation /* 变量的定义 变量的类型是可以不用写的 var a=10 常量的定义 let修饰 */ print(a) let b= print(b ...

  7. 初学swift笔记 函数(六)

    import Foundation /* func 函数名 (参数名:参数类型) { } func 函数名 (参数名:参数类型) ->Void{ } func 函数名 (参数名:参数类型) -& ...

  8. 初学swift笔记 流程控制(五)

    import Foundation ; i<=; i++ { println(i) } let str1="adl;fjasdfl;ouewrouqwperuadf" for ...

  9. 初学swift笔记字典、数组(四)

    import Foundation //字典 元素顺序是无序的 //1.字典元素是键值对 (key:value) //key 一定是可哈希的 string\int\bool var dic1=[&qu ...

随机推荐

  1. C#解析JSON数据

    本篇文章主要介绍C#对Json数据的读取. 主要操作过程是: 发送Http请求获取Json数据 把获取的Json数据转换成C#中的类 下面我们以12306火车票余票的数据为例进行切入. 首先来看一下h ...

  2. Robberies(HDU 2955 DP01背包)

    Robberies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  3. C语言基础10

    栈区间:在函数内部声明的变量都存放在栈区间,比如int char 数组 结构体 指针,只管申请,系统会自动帮我们回收,收回的时间是作用域结束之后,遵循的原则是"先进后出". int ...

  4. C语言超级经典400道题目

    C语言超级经典400道题目 1.C语言程序的基本单位是____ A) 程序行 B) 语句 C) 函数 D) 字符.C.1 2.C语言程序的三种基本结构是____构A.顺序结构,选择结构,循环结 B.递 ...

  5. SQL Server索引 - 聚集索引、非聚集索引、非聚集唯一索引 <第八篇>

    聚集索引.非聚集索引.非聚集唯一索引 我们都知道建立适当的索引能够提高查询速度,优化查询.先说明一下,无论是聚集索引还是非聚集索引都是B树结构. 聚集索引默认与主键相匹配,在设置主键时,SQL Ser ...

  6. C# 多线程的自动管理(线程池) 基于Task的方式

    C# 多线程的自动管理(线程池) 在多线程的程序中,经常会出现两种情况:    1. 应用程序中线程把大部分的时间花费在等待状态,等待某个事件发生,然后给予响应.这一般使用 ThreadPool(线程 ...

  7. H.264 RTP 封包格式

    H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) NALU 头由一个字节组成, 它的语法如下: +---------------+      |0|1|2|3|4|5|6|7 ...

  8. 在Linux CentOS 6.5 (Final)上安装git-1.9.0

    CentOS 6.5 (Final)默认安装的git版本为1.7.1.3,而我们希望安装1.9.0版本.由于rpm安装库里没有1.9.0版本,因此我们需要找其它方法来安装. 网上有很多文章介绍了如何从 ...

  9. UESTC_酱神寻宝 2015 UESTC Training for Dynamic Programming<Problem O>

    O - 酱神寻宝 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  ...

  10. Intersection of Two Linked Lists 解答

    Question Write a program to find the node at which the intersection of two singly linked lists begin ...