在Swift中,“自我”有什么用?

我是Swift的新手,我想知道self它的用途以及原因。

我已经在类和结构中看到了它,但是我真的没有发现它们在我的代码中提到它们是必不可少的。它们的用途是什么?为什么?在什么情况下有必要使用它?

我一直在阅读很多关于这个问题的问题和答案,但是没有一个人能够完全回答我的问题,而且他们总是倾向于将其与thisJava 进行比较,对此我并不陌生。


开满天机
浏览 605回答 3
3回答

慕侠2389804

创建扩展时,您还将经常使用self,例如:extension Int {    func square() -> Int {        return self * self    }    // note: when adding mutating in front of it we don't need to specify the return type    // and instead of "return " whatever    // we have to use "self = " whatever    mutating func squareMe() {        self = self * self    }}let x = 3let y = x.square()  println(x)         // 3printlx(y)         // 9现在假设您要更改var结果本身,则必须使用mutating func进行更改var z = 3println(z)  // 3现在让它变异z.squareMe()println(z)  // 9//现在来看另一个使用字符串的示例:extension String {    func x(times:Int) -> String {        var result = ""        if times > 0 {            for index in 1...times{                result += self            }            return result        }        return ""    }    // note: when adding mutating in front of it we don't need to specify the return type    // and instead of "return " whatever    // we have to use "self = " whatever    mutating func replicateMe(times:Int){        if times > 1 {            let myString = self            for index in 1...times-1{                self = self + myString            }        } else {            if times != 1 {                self = ""            }        }    } }var myString1 = "Abc"let myString2 = myString1.x(2)println(myString1)         // "Abc"println(myString2)         // "AbcAbc"现在让我们更改myString1myString1.replicateMe(3)println(myString1)         // "AbcAbcAbc"
打开App,查看更多内容
随时随地看视频慕课网APP