Swift 4方法介绍和用法详细示例

本文概述

  • 实例方法
  • 本地和外部参数名称
  • 方法中的自属性
  • 通过实例方法修改值类型
在Swift4中, 方法是与特定类型关联的函数。在Objective-C中, 类用于定义方法, 而在Swift4中, 我们具有用于类, 结构和枚举的方法。
实例方法实例方法是与类, 结构或枚举的实例相关联的方法。实例方法写在该类型的主体内。
实例方法提供了与实例需求相关的功能, 还提供了访问和修改实例属性的功能。实例方法写在大括号{}中。它具有对类型实例的方法和属性的隐式访问。当调用该类型的特定实例时, 它将可以访问该特定实例。
句法:
func funcname(Parameters) -> returntype {Statement1Statement2---Statement Nreturn parameters}

例:
class calculate {let a: Intlet b: Intlet res: Intinit(a: Int, b: Int) {self.a = aself.b = bres = a + b}func tot(c: Int) -> Int {return res - c}func result() {print("Result is: \(tot(c: 20))")print("Result is: \(tot(c: 50))")}}let pri = calculate(a: 200, b: 300)pri.result()

输出
Result is: 480Result is: 450

【Swift 4方法介绍和用法详细示例】在上面的示例中, 类calculate定义了两个实例方法:
  • init()定义为将两个数字a和b相加并将其存储在结果’ res’ 中。
  • tot()用于从传递的’ c’ 值中减去’ res’ 。
本地和外部参数名称在Swift4中, 函数可以描述其变量的局部和全局声明。函数和方法的局部和全局参数名称声明的特征是不同的。 Swift 4中的第一个参数由名为” with” , ” for” 和” by” 的介词引用, 以便于访问命名约定。
在Swift 4中, 你可以将第一个参数名称声明为本地参数, 将其余参数名称声明为全局参数名称。
让我们来看一个例子。在这里, ” no1″ 被声明为局部参数名称, ” no2″ 被用于全局声明, 并且可以在整个程序中进行访问。
例子
class divide {var count: Int = 0func incrementBy(no1: Int, no2: Int) {count = no1 / no2print(count)}}let counter = divide()counter.incrementBy(no1: 100, no2: 3)counter.incrementBy(no1: 200, no2: 5)counter.incrementBy(no1: 400, no2: 7)

输出
334057

方法中的自属性方法的所有定义类型实例都有一个称为” self” 的隐式属性。 “ 自我” 属性或” 自我” 方法提供了用于访问实例本身的方法。
例子
class calculate {let a: Intlet b: Intlet res: Intinit(a: Int, b: Int) {self.a = aself.b = bres = a + bprint("Result Inside Self Block: \(res)")}func tot(c: Int) -> Int {return res - c}func result() {print("Result is: \(tot(c: 20))")print("Result is: \(tot(c: 50))")}}let pri = calculate(a: 100, b: 200)let sum = calculate(a: 300, b: 400)pri.result()sum.result()

输出
Result Inside Self Block: 300Result Inside Self Block: 700Result is: 280Result is: 250Result is: 680Result is: 650

通过实例方法修改值类型在Swift 4中, 结构和枚举属于值类型, 不能通过其实例方法更改, 但我们可以通过” 变异” 行为来修改值类型。 Mutate将对实例方法进行任何更改, 并在执行该方法后返回到原始形式。同样, 通过’ self’ 属性, 将为其隐式函数创建新实例, 并在执行后替换现有方法。
例子
struct area {var length = 1var breadth = 1func area() -> Int {return length * breadth}mutating func scaleBy(res: Int) {length *= resbreadth *= resprint(length)print(breadth)}}var val = area(length: 3, breadth: 5)val.scaleBy(res: 2)val.scaleBy(res: 20)val.scaleBy(res: 200)

输出
6101202002400040000

    推荐阅读