ChatGPT 可用网址,仅供交流学习使用,如对您有所帮助,请收藏并推荐给需要的朋友。
https://ckai.xyz
简单说说 Swift 中的 self 和 Self。
总结下就是:
self 是在实例方法或闭包中引用当前实例的关键字。
Self 是在协议中引用遵循该协议的类型本身的关键字。
self:在一个实例方法或闭包中,self 是一个特殊的关键字,用于引用当前实例。它指代当前实例对象,可以用于访问和操作实例的属性、方法和下标等成员。
class MyClass {
var name: String
init(name: String) {
self.name = name
}
func printName() {
print("My name is \(self.name)")
}
}
let obj = MyClass(name: "John")
obj.printName() // 输出 "My name is John"
在上述示例中,self.name
引用了类中的属性 name
,而 self
代表当前实例自身。
Self:在协议中,Self 是一个特殊的关键字,用于引用遵循该协议的类型本身。它以大写字母开头,表示类型本身,而不是特定的实例。
protocol Printable {
static func printSomething()
}
class MyClass: Printable {
static func printSomething() {
print("Printing something")
}
}
MyClass.printSomething() // 输出 "Printing something"
在上述示例中,Self
用作协议 Printable
中的关联类型,它表示遵循该协议的实际类型(例如 MyClass
)。在协议中,Self
表示实际实现该协议的类型。
常用例子就是如果在一个类中定义了静态属性和方法,静态属性和静态方法是直接属于类本身,所以在内部可以直接使用 Self 来调用,在外部则使用类名调用。
class Student {
static var myAge = 20
static func printAge() {
print(Self.myAge)
}
}
Student.printAge() // 输出 20