📜  Swift方法

📅  最后修改于: 2021-01-11 07:58:10             🧑  作者: Mango

Swift4方法

在Swift4中,方法是与特定类型关联的函数。在Objective-C中,类用于定义方法,而在Swift4中,我们具有用于类,结构和枚举的方法。

实例方法

实例方法是与类,结构或枚举实例相关联的方法。实例方法写在该类型的主体内。

实例方法提供与实例需求相关的功能,以及访问和修改实例属性的功能。实例方法写在大括号{}中。它具有对类型实例的方法和属性的隐式访问。当调用该类型的特定实例时,它将可以访问该特定实例。

句法:

func funcname(Parameters) -> returntype {
   Statement1
   Statement2
   ---
   Statement N
   return parameters
}

例:

class calculate {
   let a: Int
   let b: Int
   let res: Int
   init(a: Int, b: Int) {
      self.a = a
      self.b = b
      res = 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: 480
Result is: 450

在上面的示例中,类calculate定义了两个实例方法:

  • init()被定义为将两个数字a和b相加并将其存储在结果'res'中。
  • tot()用于从传递的'c'值中减去'res'。

本地和外部参数名称

在Swift4中,函数可以描述其变量的局部和全局声明。函数和方法的局部和全局参数名称声明的特征是不同的。 Swift 4中的第一个参数由名为“ with”,“ for”和“ by”的介词引用,以便于访问命名约定。

在Swift 4中,您可以将第一个参数名称声明为本地参数,将其余参数名称声明为全局参数名称。

让我们来看一个例子。在这里,“ no1”被声明为局部参数名称,“ no2”被用于全局声明并在整个程序中进行访问。

class divide {
   var count: Int = 0
   func incrementBy(no1: Int, no2: Int) {
      count = no1 / no2
      print(count)
   }
}
let counter = divide()
counter.incrementBy(no1: 100, no2: 3)
counter.incrementBy(no1: 200, no2: 5)
counter.incrementBy(no1: 400, no2: 7)

输出:

33
40
57

方法中的自属性

方法的所有已定义类型实例都有一个称为“ self”的隐式属性。 “自我”属性或“自我”方法提供了用于访问实例本身的方法。

class calculate {
   let a: Int
   let b: Int
   let res: Int
   init(a: Int, b: Int) {
      self.a = a
      self.b = b
      res = a + b
      print("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: 300
Result Inside Self Block: 700
Result is: 280
Result is: 250
Result is: 680
Result is: 650

通过实例方法修改值类型

在Swift 4中,结构和枚举属于值类型,不能通过其实例方法更改,但我们可以通过“变异”行为来修改值类型。 Mutate将对实例方法进行任何更改,并在执行该方法后返回到原始形式。同样,通过'self'属性,将为其隐式函数创建新实例,并在执行后替换现有方法。

struct area {
   var length = 1
   var breadth = 1
   func area() -> Int {
      return length * breadth
   }
   mutating func scaleBy(res: Int) {
      length *= res
      breadth *= res
      print(length)
      print(breadth)
   }
}
var val = area(length: 3, breadth: 5)
val.scaleBy(res: 2)
val.scaleBy(res: 20)
val.scaleBy(res: 200)

输出:

6
10
120
200
24000
40000