你用哪个'obj'或'self.obj'?

Mai*_*awa 0 function object swift

我有一个微不足道的问题.

在这种情况下你使用A或B哪个?为什么?obj和self.obj完全一样.

let obj = MyClass()

func sampleFunction(obj: MyClass) {
    // A
    obj.xxx()

    // B
    self.obj.xxxx()
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*Tim 5

self.obj指您所在类的实例并访问定义的obj 实例变量.引用obj将引用函数范围内的命名参数.

class Test {

let obj = "Global"

    func sampleFunction(obj: String) {
        // A
        print(obj)

        // B
        print(self.obj)
    }
}

var t = Test()

t.sampleFunction("Internal")
Run Code Online (Sandbox Code Playgroud)

将其粘贴到Playground中进行演示,以帮助解释.

这是主观是否要使用self引用实例变量,但如果有另一个局部变量或命名的参数具有相同的名称作为该范围的实例变量-您必须使用self区分像例子.

总是self用来引用实例变量是一个很好的经验法则,这提高了可读性并减少了与范围内发生冲突的局部变量名相关的错误的可能性.