Tags: Swift 学习笔记
发布时间:2015-07-20
修改时间:2015-07-20
作者:Erwin
博客地址:技术杂货铺
欢迎转载,转载请注明出处。
Swift学习笔记系列——(10)方法
类、结构体和枚举都可以定义方法,而OC中只有类可以这样做。
方法分为:实例方法和类型方法。前者属于类型的一个实例,后者属于类型。
实例方法
语法和函数一样。
方法的本地和外部参数名称
默认情况下,Swift方法的第一个参数名之作为本地名字使用,但是后面的参数名同时作为内部和外部参数名使用。
没必要在给第一个参数定义外部参数名称,因为第一个参数的意义很清楚了。在方法调用的时候,从第二个参数开始,就需要制定参数的外部名称了。
这样的要求和OC中一致。
变更方法的外部参数名行为
指定外部参数名
使用“#”前缀标记内部名;指定一个外部参数名
不指定外部参数名
使用“_”放置在内部参数名之前
self属性
指代实例自身。
在方法内,多数情况下self不必写。
方法的参数名和实例的属性名相同,这时不得不用self区分二者,不写self都会被当作参数处理。
在实例方法中修改值类型
结构体和枚举是值类型的。默认情况下,值类型的属性无法通过它的实例方法进行修改。
用“mutating” 标记方法,称为变异方法。
变异方法可以在方法内可以修改属性,而且任何做过的修改在方法结束后会写回到原始的结构中。变异方法也可以分配一个新的实例给它隐含的self,当方法结束,新的实例将会替代原来已经存在的。
在变异方法中给self赋值
类型方法
用“static”标记类型方法,对于类中允许子类复写的类型方法,用“class”关键字标记。
类型方法中的selft指代类型,而不是实例。
同样类型方法中的引用,默认为类型本身的属性和方法。
要理解结构体和枚举的类型 和实例的区别。