为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

开满天机 2019-11-18 18:15:36
我是Swift的新手,我想知道self它的用途以及原因。我已经在类和结构中看到了它,但是我真的没有发现它们在我的代码中提到它们是必不可少的。它们的用途是什么?为什么?在什么情况下有必要使用它?我一直在阅读很多关于这个问题的问题和答案,但是没有一个人能够完全回答我的问题,而且他们总是倾向于将其与thisJava 进行比较,对此我并不陌生。
查看完整描述

3 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

创建扩展时,您还将经常使用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 = 3

let y = x.square()  

println(x)         // 3

printlx(y)         // 9

现在假设您要更改var结果本身,则必须使用mutating func进行更改


var z = 3


println(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"

现在让我们更改myString1


myString1.replicateMe(3)


println(myString1)         // "AbcAbcAbc"


查看完整回答
反对 回复 2019-11-18
  • 3 回答
  • 0 关注
  • 554 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信