一、使用规范的命名
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)->()
时间: 2024-10-20 20:29:13