标签:实例方法
一、使用规范的命名
swift的方法是在枚举、结构体或类中定义的函数,因此我们之前介绍的函数基本知识适用于方法,方法是具有面向对象的特点,方法是是具有面向对象的特点,与属性类似,方法可以分为:实例方法和静态方法;
实例方法与实例属性相似,都隶属于枚举、结构体或类的个体,即实例,通过实例化这些类型,创建实例,使用实例调用的方法
class Account {
var amount:Double = 1000.0
var owner:String = " "
func interestWithRate(rate:Double)->Double{
return rate * amount
}
}
var myaccount = Account()
println(myaccount.interestWithRate(0.88)) 在Swift中,方法和函数主要区别如下:
(1)、方法的调用前面要有主体,而函数不需要;
(2)、方法是在枚举、结构体或类内部定义的;
(3)、方法命名规范与函数不同;
1、Swift和Object-C语言的规范
目前苹果为IOS和MAC OS X应用开发的提供的开发语言为swift和object-c,
2、SmallTalk 语法风格的多重参数
Object-C中的方法命名遵循了SmallTalk 语法风格,它将一个方法名分成几个部分,成为多重参数,假设定义一个按照索引插入对象到集合里的一个方法,
(1)方法名中使用介词:swift方法的名称通常用一个介词(with,for,by)指向方法中的第一个参数;
(2)使用外部参数名。从第二个参数后,可以指定外部参数名
(3)省略外部参数名。如果没有指定外部参数名,会将本地参数名作为外部参数名,在函数中要在本地的参数名前加"#",而方法不需要
3、示例
class Employee{
var no:Int = 0
var name:String = ""
var job:String?
var salary:Double = 0
var depet:Department?
}
class Department{
var no:Int = 0
var name:String = ""
var Employees:[Employee] = [Employee]()
func insertWithObject(anObject:AnyObject,atIndex index:Int)->(){
let emp = anObject as Employee//将类型AnyObject强制转化为Employee类型
employees.insert(emp,atIndex:index)
}
}var dept = Department() var emp1 = Employee() dept.insertWithObject(emp1,atIndex:0) var emp2 = Employee() dept.insertWithObject(emp2,atIndex:0) var emp3 = Employee() dept.insertWithObject(emp3atIndex:0) println(dept.employees.count)
二、结构体和枚举方法变异
结构体和枚举中的方法默认情况下是不能修改属性的,将之前的Department修改为结构体,代码如下:
struct Department{
var no:Int = 0
var name:String = ""
var Employees:[Employee] = [Employee]()
func insertWithObject(anObject:AnyObject,atIndex index:Int)->(){
let emp = anObject as Employee//将类型AnyObject强制转化为Employee类型
employees.insert(emp,atIndex:index) //编译错误
}
}如果要修改,需要将方法声明为变异的(mutating),修改方法声明如下:
mutating func insertWithObject(anObject:AnyObject,atIndex index:Int)->()
本文出自 “平凡之路” 博客,请务必保留此出处http://linjohn.blog.51cto.com/1026193/1622276
标签:实例方法
原文地址:http://linjohn.blog.51cto.com/1026193/1622276