[英] What is "self" used for in Swift?
我是Swift的新手,我想知道self
是用来做什么的,为什么.
我在类和结构中见过它,但我真的觉得它们没有必要,甚至没有必要在我的代码中提到它们.它们的用途是什么?为什么?在什么情况下有必要使用它?
我已经阅读了很多关于这个问题的问题和答案,但没有一个完全回答了我的问题,他们总是倾向于将它与Java中的this
个进行比较,我对Java一点都不熟悉.
我是Swift的新手,我想知道self
是用来做什么的,为什么.
我在类和结构中见过它,但我真的觉得它们没有必要,甚至没有必要在我的代码中提到它们.它们的用途是什么?为什么?在什么情况下有必要使用它?
我已经阅读了很多关于这个问题的问题和答案,但没有一个完全回答了我的问题,他们总是倾向于将它与Java中的this
个进行比较,我对Java一点都不熟悉.
在创建扩展时,您也会经常使用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结果本身
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.replicateMe(3)
println(myString1) // "AbcAbcAbc"
如何使用 Date.ParseStrategy 在 Swift 5.6 中将字符串解析为日期?
AVPlayer 在 iOS 15.4 中寻求 completionHandler 返回 false
Xcode swift ui 错误“KeyPathComparator”仅在 macOS 12.0 或更高版本中可用
App Tracking Transparency 如何影响显示广告的应用程序? - IDFA iOS14
xcrun:错误:无法找到实用程序“xctest”,不是开发人员工具或 PATH
我可以将 Xcode 与 iPhone Simulator.app 一起安装在外部硬盘上吗?
在 SwiftUI 中,如何在 UIView 内或作为 UIView 使用 UIHostingController?
根据禁用与否更改 SwiftUI 中按钮的 colored颜色
Swift:“Hashable.hashValue”作为协议要求已被弃用;