解释Swift中函数和方法的区别
作为一名 iOS 开发者,理解 Swift 语言中函数和方法的区别至关重要。
你可能觉得函数和方法很难区分,甚至认为它们是一样的。但事实并非如此,它们之间存在一些差异。让我们在这篇文章中了解一下。
在 Swift 语言中,方法用于类、结构体和枚举中,而函数则独立定义。基本上,你可以在代码中的任何地方创建函数,而无需创建类或结构体。
简单来说,每个方法都是一个函数,但并非每个函数都是一个方法。
函数的作用是什么?
基本上,函数用于执行特定操作,并通过其名称调用。调用函数时,传递变量或常量作为参数非常简单。此外,我们可以从函数返回任何类型的返回值。一个独立于文件的函数也可以在文件外部定义。
语法
func functionName(parameters...) -> returnType {
// write statements here to perform actions
}
示例
func performTaskAfter(_ seconds: Double, completionHandler: @escaping () -> ()?) {
// perform an async action after given delay
// .now() + seconds: adding given seconds in current time
DispatchQueue.main.asyncAfter(deadline: .now() + seconds) {
completionHandler?()
}
}
解释
在上面的示例中,我们定义了一个名为 performTaskAfter 的函数,用于在给定的秒数后执行任务。此函数可以在代码中的任何位置定义,并且可以从代码中的任何位置调用它。
方法的作用是什么?
我们知道,每个方法都是一个函数,可以在类、结构体和枚举中定义。使用方法,我们可以根据需要执行某些操作。根据您的需求,您可以定义多个方法来执行不同的任务。
现在,您必须创建一个对象才能访问类或结构体中定义的方法。使用该对象,您可以调用方法来执行任务。调用方法时可以传递参数。您应该注意,如果不创建该类或结构体的对象,则无法访问其方法。
在 Swift 语言中,方法有两种类型:
实例方法 -顾名思义,这些是特定于实例的方法,可以通过实例调用。如果您尝试在没有该类或结构体的实例的情况下访问方法,编译器将报错。此外,您不能从另一个类的实例调用一个类的(例如,类 Student)方法。
类型方法 - 在 Swift 中,您可以使用 `static` 或 `class` 关键字前缀定义类型方法。无需创建类或结构体的实例即可调用类型方法。可以直接从类型名称调用它们。
示例
struct Student {
let name: String
let grade: Int
// Instance method
func displayInfo() {
print("name: \(name)")
print("grade: \(grade)")
}
// Type method
static func dummyStudents() -> [Student] {
return [Student(name: "Ray Sin", grade: 4),
Student(name: "Cherry Blossom", grade: 2),
Student(name: "Perry Scope", grade: 7)]
}
}
let anne = Student(name: "Anne Teak", grade: 5)
// calling instance method from object anne
anne.displayInfo()
// calling type method
let students = Student.dummyStudents()
print("number of students: ", students.count)
输出
name: Anne Teak grade: 5 number of students: 3
解释
在上面的示例中,我们创建了两个不同的方法:`displayInfo()` 和 `dummyStudents()`。我们可以看到,第一个方法是实例方法,通过实例访问,而第二个方法由类 Student 本身调用。
Swift中函数和方法的可视化识别

Swift 语言显示了函数和方法是如何表示的。很明显,两者都表示如下:
函数的图标像 ƒ
方法的图标是 M
| 总结Swift中函数和方法的区别 | |
|---|---|
| 函数 | 方法 |
| 函数被定义为独立的。因此,我们可以在类之外定义函数。 | 它们与类或结构体本身相关联。在作用域之外,不能定义方法。 |
| 函数是 C/C++ 等结构化语言的独立属性。 | 方法在对象的范围内工作,类似于 C#、Java、Swift 等面向对象语言。 |
| 函数不会捕获任何引用变量或常量。 | 方法只能使用引用变量(或实例)调用。 |
| 函数不属于类,它们单独执行。 | 方法用于操作该类或结构体的特定实例。 |
| 无需创建对象即可调用它们。 | 需要一个对象才能访问它们。 |
| 简单来说,并非每个函数都是方法。 | 而每个方法都是一个函数。 |
结论
Swift 提供了用于不同目的的函数和方法。本文解释了它们之间的区别,即使你可能认为它们是一样的。
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP