Swift4.2_ 方法

作者: 鼬殿 | 来源:发表于2018-12-05 18:00 被阅读21次

官网链接

方法是与特定类型相关联的函数。类、结构和枚举都可以定义实例方法,这些方法封装用于处理给定类型的实例的特定任务和功能。类、结构和枚举还可以定义与类型本身关联的类型方法。类型方法类似于Objective-C中的类方法。

结构和枚举可以在Swift中定义方法,这是与CObjective-C的主要区别。在Objective-C中,类是唯一可以定义方法的类型。在Swift中,您可以选择是定义类、结构还是枚举,并且仍然可以灵活地在创建的类型上定义方法。

  • 实例方法 (Instance Methods)

实例方法是属于特定类,结构或枚举的实例的函数。 它们通过提供访问和修改实例属性的方法,或通过提供与实例目的相关的功能来支持这些实例的功能。 实例方法与函数具有完全相同的语法,如函数中所述。

您在其所属类型的开始和结束括号内编写实例方法。 实例方法可以隐式访问该类型的所有其他实例方法和属性。 实例方法只能在它所属类型的特定实例上调用。 没有现有实例,不能单独调用它。

这是一个定义一个简单Counter类的示例,可用于计算操作发生的次数:

class Counter {
    var count = 0
    func increment() {
        count += 1
    }
    func increment(by amount: Int) {
        count += amount
    }
    func reset() {
        count = 0
    }
}

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

  • increment每次给计数器增加 1;
  • increment(by: Int)按照特定的整型数量来增加计数器;
  • reset会把计数器重置为零。

Counter类同样声明了一个变量属性 count来追踪当前计数器的值。

调用实例方法与属性一样都是用点语法:

let counter = Counter()
// the initial counter value is 0
counter.increment()
// the counter's value is now 1
counter.increment(by: 5)
// the counter's value is now 6
counter.reset()
// the counter's value is now 0
  • self 属性 (The self Property)

每一个类的实例都隐含一个叫做 self的属性,它完完全全与实例本身相等。你可以使用 self属性来在当前实例当中调用它自身的方法。
在上边的例子中,increment()方法可以写成这样:

func increment() {
    self.count += 1
}

实际上,你不需要经常在代码中写 self。如果你没有显式地写出 self,Swift会在你于方法中使用已知属性或者方法的时候假定你是调用了当前实例中的属性或者方法。这个假定通过在 Counter的三个实例中使用 count(而不是 self.count)来做了示范。

对于这个规则的一个重要例外就是当一个实例方法的形式参数名与实例中某个属性拥有相同的名字的时候。在这种情况下,形式参数名具有优先权,并且调用属性的时候使用更加严谨的方式就很有必要了。你可以使用 self属性来区分形式参数名和属性名。
这时, self就避免了叫做 x的方法形式参数还是同样叫做x 的实例属性这样的歧义。

struct Point {
    var x = 0.0, y = 0.0
    func isToTheRightOf(x: Double) -> Bool {
        return self.x > x
    }
}
let somePoint = Point(x: 4.0, y: 5.0)
if somePoint.isToTheRightOf(x: 1.0) {
    print("This point is to the right of the line where x == 1.0")
}
// Prints "This point is to the right of the line where x == 1.0"

除去self前缀,Swift将会假定两个 x 都是叫做x 的方法形式参数。

LZ发现了翻译比较全的链接,而且代码上面看着比简书舒服一些,就不再往下继续了
传送门

相关文章

  • Swift4.2_ 方法

    官网链接 方法是与特定类型相关联的函数。类、结构和枚举都可以定义实例方法,这些方法封装用于处理给定类型的实例的特定...

  • Swift4.2_函数

    官网链接 Swift中的每个函数都有一个类型,由函数的参数类型和返回类型组成。 您可以像Swift中的任何其他类型...

  • Swift4.2_枚举

    官网链接 枚举为一组相关值定义了一个公共类型,使您能够在代码中以类型安全的方式处理这些值。 如果您熟悉C,您将知道...

  • Swift4.2_属性

    官网链接 属性将值与特定类,结构或枚举相关联。 存储属性将常量和变量值存储为实例的一部分,而计算属性则计算(而不是...

  • Swift4.2_闭包

    官网链接 闭包是自包含的功能块,可以在代码中传递和使用。 Swift中的闭包类似于C和Objective-C中的块...

  • Swift4.2_集合类型

    官网链接 数组 (Arrays) 1.创建一个空的数组 2.创建具有默认值的数组 3.将两个数组加起来,创建一个新...

  • Swift4.2_控制流

    官网链接 For-In循环 ( For-In Loops) 使用for-in循环遍历序列,例如数组中的项、数字范围...

  • Swift4.2_基础语法(上)

    官方文档 1.基础语法: 常量和变量(Constants and Variables) NOTEIf a stor...

  • Swift4.2_基础语法(下)

    官方文档 可选类型 (Optionals) 值可能不存在的情况下,你可以使用可选类型。 一个可选类型代表两种可能性...

  • Swift4.2_操作运算符

    官网链接 赋值运算符 (Assignment Operator) 算术运算符 (Arithmetic Opera...

网友评论

    本文标题:Swift4.2_ 方法

    本文链接:https://www.haomeiwen.com/subject/terwcqtx.html