在Java,PHP,Swift等语言中,分别有this
,$this
和self
等关键字,它们是包含类的特定实例的反身指针。如果没有其他局部变量共享相同的标识符,Java和Swift都允许程序员完全省略该语句。我的问题是在生产中写这个的推荐方法是什么?例如,生产中的程序员在没有必要时省略self
是否可以接受?
var name: String = ""
init(name: String) {
self.name = name
}
func doSomeMethod() {
print(name)
}
或生产中的开发人员总是在访问实例属性时使用self
子句,如
var name: String = ""
init(name: String) {
self.name = name
}
func doSomeMethod() {
print(self.name)
}
答案 0 :(得分:2)
文档描述得非常好
自我属性
类型的每个实例都有一个名为
self
的隐式属性 完全等同于实例本身。你使用self
用于引用其自己实例中的当前实例的属性 方法上面示例中的
increment()
方法(请参阅链接指南中的示例)可能已经编写 像这样:func increment() { self.count += 1 }
实际上,您不需要经常在代码中编写
self
。 如果你没有明确写出self
,那么Swift 假设您指的是当前的属性或方法 每当您在a中使用已知属性或方法名称时的实例 方法。使用count
(相反,使用self.count
证明了这一假设Counter
的三个实例方法中的Counter
)。 (self
是本节中提到的类。当一个参数名称出现时,会出现此规则的主要异常 instance方法与该实例的属性同名。在 在这种情况下,参数名称优先,它变为 必须以更合格的方式提及房产。你用
String str = "hi"; System.out.println(str+ "\uD83D\uDDDA");
属性,用于区分参数名称和 财产名称。
答案 1 :(得分:2)
我非常喜欢在生产代码中始终使用 此 。
它对发出的机器代码没有任何影响,并且让程序员更容易使事情变得毫无意义,而不是让事情变得更容易 您可能想要使用的其他工具。 (即代码搜索工具,lint类型工具等)
此外,避免愚蠢的拼写错误所节省的时间远远大于打字时节省的时间。
答案 2 :(得分:1)
访问实例属性时,当前需要proposal on the swift-evolution repository才能self
。对于总是要求它,这是一个相当有说服力的论据。