天天看点

Swift 方法

swift 方法是与某些特定类型相关联的函数

在 objective-c 中,类是唯一能定义方法的类型。但在 swift 中,你不仅能选择是否要定义一个类/结构体/枚举,还能灵活的在你创建的类型(类/结构体/枚举)上定义方法。

在 swift 语言中,实例方法是属于某个特定类、结构体或者枚举类型实例的方法。

实例方法提供以下方法:

可以访问和修改实例属性

提供与实例目的相关的功能

实例方法要写在它所属的类型的前后大括号({})之间。

实例方法能够隐式访问它所属类型的所有的其他实例方法和属性。

实例方法只能被它所属的类的某个特定实例调用。

实例方法不能脱离于现存的实例而被调用。

语法:

counter类定义了三个实例方法:

increment 让计数器按 1 递增;

incrementby(amount: int) 让计数器按一个指定的整数值递增;

reset 将计数器重置为0。

counter 这个类还声明了一个可变属性 count,用它来保持对当前计数器值的追踪。

swift 函数参数可以同时有一个局部名称(在函数体内部使用)和一个外部名称(在调用函数时使用

swift 中的方法和 objective-c 中的方法极其相似。像在 objective-c 中一样,swift 中方法的名称通常用一个介词指向方法的第一个参数,比如:with,for,by等等。

swift 默认仅给方法的第一个参数名称一个局部参数名称;默认同时给第二个和后续的参数名称为全局参数名称。

以下实例中 'no1' 在swift中声明为局部参数名称。'no2' 用于全局的声明并通过外部程序访问。

我们强制在第一个参数添加外部名称把这个局部名称当作外部名称使用(swift 2.0前是使用 # 号)。

相反,我们呢也可以使用下划线(_)设置第二个及后续的参数不提供一个外部名称。

类型的每一个实例都有一个隐含属性叫做self,self 完全等同于该实例本身。

输出:

swift 语言中结构体和枚举是值类型。一般情况下,值类型的属性不能在它的实例方法中被修改。

但是,如果你确实需要在某个具体的方法中修改结构体或者枚举的属性,你可以选择变异(mutating)这个方法,然后方法就可以从方法内部改变它的属性;并且它做的任何改变在方法结束时还会保留在原始结构中。

方法还可以给它隐含的self属性赋值一个全新的实例,这个新实例在方法结束后将替换原来的实例。

可变方法能够赋给隐含属性 self 一个全新的实例。

实例方法是被类型的某个实例调用的方法,你也可以定义类型本身调用的方法,这种方法就叫做类型方法。

声明结构体和枚举的类型方法,在方法的func关键字之前加上关键字static。类可能会用关键字class来允许子类重写父类的实现方法。

类型方法和实例方法一样用点号(.)语法调用。

你可以在一个实例的实例方法中使用这个隐含的self属性来引用当前实例。