关于swift:self-与-Self

48次阅读

共计 840 个字符,预计需要花费 3 分钟才能阅读完成。

简略说说 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

正文完
 0