我遇到了在类本身中调用实例方法的问题。如果有人能为我提供一些见解,我将不胜感激。 我目前的代码如下:
class Rect
{
func printthis() -> String {
return "this is working or what"
}
var toPrint:String = self.printthis()
}
我在Xcode中遇到的错误是:使用未解析的标识符'self'。
我在这里缺少什么?
答案 0 :(得分:4)
如果没有实例,则无法调用实例方法。 class
仅仅是实例的模板。所以我不想你在这里做什么......
但答案是 no ,你不能从类定义中调用实例方法,因为还没有实例。
也许您想要对类方法进行delcare并使用它来创建实例变量?如果是这样,你可以这样做:
class Rect {
class func printthis() -> String {
return "this is working or what"
}
var toPrint:String
init() {
toPrint = Rect.printthis()
}
}
var r = Rect()
println(r.toPrint) //-> this is working or what
答案 1 :(得分:2)
问题是swift严格要求启动所有属性。 你可以作为一种解决方法
class Rect
{
func printthis() -> String {
return "this is working or what"
}
var toPrint:String = ""
init() {
toPrint = printthis()
}
}
答案 2 :(得分:1)
类的一个实例未初始化并且能够被引用(即使是自己'),直到为其所有变量赋值。
可能适合您的选项是将您的变量声明为隐式解包的可选项,默认情况下将其指定为nil。然后在类的init方法中,由于所有变量都已赋值,因此您可以开始在实例上调用方法。
class Rect {
var toPrint: String!
init() {
toPrint = printthis()
}
printthis() -> String {
return "this will work"
}
}