我在調用類本身內的實例方法時遇到問題。如果有人能夠提供我一些見解,將不勝感激。 我當前的代碼如下所示:如何使用Swift在類內調用實例方法
class Rect
{
func printthis() -> String {
return "this is working or what"
}
var toPrint:String = self.printthis()
}
我在Xcode得到的錯誤是:無法解析的標識符「自我」的使用。
我在這裏錯過了什麼?
我在調用類本身內的實例方法時遇到問題。如果有人能夠提供我一些見解,將不勝感激。 我當前的代碼如下所示:如何使用Swift在類內調用實例方法
class Rect
{
func printthis() -> String {
return "this is working or what"
}
var toPrint:String = self.printthis()
}
我在Xcode得到的錯誤是:無法解析的標識符「自我」的使用。
我在這裏錯過了什麼?
一個類的實例沒有初始化,能夠引用(甚至「自我」),直到所有的變量都被賦值。
可能適用於您的選項是將您的變量聲明爲隱式解包的可選項,默認情況下賦值爲nil。然後在該類的init方法中,由於所有變量都被賦值,因此您可以開始在您的實例上調用方法。
class Rect {
var toPrint: String!
init() {
toPrint = printthis()
}
printthis() -> String {
return "this will work"
}
}
感謝您指點我在正確的方向,它的工作! – codingbear
如果沒有實例,則無法調用實例方法。 class
僅僅是實例的模板。所以我不在你這裏試圖做什麼......
但是答案是沒有,你不能調用類定義的實例方法,因爲沒有實例。
也許你想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) – holex
有一個類似的問題,並根據您的答案嘗試直接將屬性方法分配給沒有'init()'代碼的屬性,它的工作原理是:'var toPrint:String = Rect.printthis()'。 –
是的,這也會工作:) –
問題是,swift是嚴格的初始化所有屬性。 您可以作爲一種解決方法
class Rect
{
func printthis() -> String {
return "this is working or what"
}
var toPrint:String = ""
init() {
toPrint = printthis()
}
}
感謝基督徒以及花時間迴應我的問題! – codingbear
從未見過迅捷,但我猜測它必須是一個靜態方法,如果你分配給類變量。 – KevinDTimm
它不是一個類變量,它是一個實例變量。 –