我是Swift的新手,我想知道self
它的用途以及原因。
我已经在类和结构中看到了它,但是我真的没有发现它们在我的代码中提到它们是必不可少的。它们的用途是什么?为什么?在什么情况下有必要使用它?
我一直在阅读很多关于该问题的问题和答案,但是没有一个能够完全回答我的问题,而且他们总是倾向于将其与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结果本身,则必须使用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"
元类型和? 做和返回一个? 我知道可以用来检查。你如何使用?
问题内容: 这两个类别有何不同? 有什么明显的区别吗? 问题答案: 是一个 类变量 。 的是一个 实例变量 。 即的被实例之间共享。 用可以像列表这样修改的东西更容易证明区别: 输出量
我对Swift中关于var和关键字{get set}的使用的协议有疑问。 来自Apple文档: 这将不是公正的: 我错过了什么?
问题内容: 我已经使用Xcode 6和快速语言创建了一个示例项目。 Xcode使用以下代码创建了AppDelegate.swift @NSApplicationMain是什么意思,带有main()的main.mm/main.m文件在哪里? 问题答案: 如发行说明中所述: OS X应用程序现在可以将@NSApplicationMain属性应用于其应用程序委托类,以便为该应用程序生成隐式主程序。此属性
问题内容: Swift中的切片是什么,它与数组有何不同? 从文档中,下标(Range)的类型签名为: 为什么不返回另一个而不是一个? 看起来我可以将切片与数组连接起来: 但这会产生错误: 无法找到接受提供的参数的“下标”的重载 什么是切片? 问题答案: 切片指向数组。当数组已经存在并且切片只能描述其所需部分时,再也没有必要制作另一个数组。 加法会导致隐式强制,因此可以正常工作。为了使您的作业正常进
问题内容: 在Swift中,我看到一些类似的方法: 我想知道何时使用@objc?我读了一些文档,但他们说要在Objective-C中调用它时,应添加@objc标志 但是,这是Swift中的私有函数,@ obj的作用是什么? 问题答案: private表示仅在Swift中可见。因此使用@objc在Objective-C中可见。如果您有功能可以快速选择私有功能,则需要此功能。 @objc属性使您的Sw