📜  Swift –函数和方法的区别(1)

📅  最后修改于: 2023-12-03 15:20:25.049000             🧑  作者: Mango

Swift – 函数和方法的区别

在 Swift 中,函数和方法都可以被用来完成任务和返回值。但是,它们之间有些许不同,这篇文章将会解释它们之间的区别。

函数

函数是独立于特定对象或者类型的公共代码块。它们可以被调用并执行它们定义的代码块,也可以接收和返回值。

Swift 中,函数的语法如下:

func functionName(parameterName: ParameterType) -> ReturnType {
    // Function body
    return returnValue
}

上面这段代码中:

  • func:表示函数的开始。
  • functionName:是函数的名字。
  • parameterName:是函数的参数名。
  • ParameterType:是参数的类型。
  • ReturnType:是函数的返回类型。

举个例子,这里我们定义了一个函数用来计算两个值的和,然后返回结果:

func add(_ a: Int, _ b: Int) -> Int {
    return a + b
}

print(add(2, 3)) // output: 5
方法

方法是绑定了特定对象或类型的函数。在 Swift 中,方法是一个定义在结构体、类或枚举类型中的函数。这些方法可以访问和操作它们所定义的对象或类型的属性和方法。

Swift 类方法和实例方法的语法如下:

// Class method
class func methodName(parameterName: ParameterType) -> ReturnType {
    // Method body
    return returnValue
}

// Instance method
func methodName(parameterName: ParameterType) -> ReturnType {
    // Method body
    return returnValue
}

上述代码中:

  • class func:表示定义一个类方法。
  • func:表示定义一个实例方法。
  • methodName:是方法的名字。
  • ParameterType:是参数的类型。
  • ReturnType:是函数的返回类型。

举个例子,这里我们定义一个沿着左右和上下方向移动的点类:

class Point {
    var x = 0.0
    var y = 0.0
    
    func move(x: Double, y: Double) {
        self.x += x
        self.y += y
    }
    
    func moveTo(x: Double, y: Double) {
        self.x = x
        self.y = y
    }
}

let point = Point()
point.move(x: 2.5, y: 6.0)
print("After moving, the point is now at (\(point.x), \(point.y))") //输出:After moving, the point is now at (2.5, 6.0)

point.moveTo(x: 5.0, y: 10.0)
print("After moving, the point is now at (\(point.x), \(point.y))") //输出:After moving, the point is now at (5.0, 10.0)

在这个例子中,我们创建了一个 Point 类,有两个属性 xy。然后我们定义了两个方法:move()moveTo(),它们都用于移动这个点。其中,move()方法移动距离(增加 xy 的值),而moveTo()方法使点移动到一个新的指定位置指定位置(更新 xy 的值)。

总结

虽然函数和方法的语法很相似,但它们之间仍然存在一些差别。函数是独立于特定的对象和类型的公共代码块,而方法是与对象或类型有关的代码块。方法只能被与它们相关的对象或类型调用,而函数可以在任何地方调用。