Xcode6-beta2 kullanıyorum, ancak ilk genel betadan beri aynı sorunu yaşıyorum. Obj-C UIViewController Benim Swift alt sınıf şuna benzer:Kapatma örnek özniteliklerinden özelliklere erişim
(Function)
<_TtC12SwiftiOSTest6SomeVC: 0x10bf1ed10>
<_TtC12SwiftiOSTest6SomeVC: 0x10bf1ed10>
(c2 ve öyle ki sadece farklı C3:
class SomeVC: UIViewController {
var c1:() ->() = {
println(self)
}
var c2:() ->() {
get {
return { println(self) }
}
}
var c3:() ->() {
return { println(self) }
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
c1()
c2()
c3()
}
}
VC gösterildiğinde, aşağıdaki satırları basılmış bkz sadece gettable ise bir bilgisayarlı özellik için get {...} dahil etmek gerekli değildir.)
Yani, birinci kapatma en kendini, işlev/kapama türü kendisi başvurmak gibi görünüyor diğerleri oysa self görünüm denetleyicisine bakın (beklediğim gibi). c1 ve c2/c3 arasındaki tek fark, birincinin depolanmış bir özellik olmasıdır, ikincisi hesaplanmış özelliklerdir, ancak kapakların ve yakalanan değerlerinin aynı olmasını beklerdim, yani her zaman kaplamayı görmek için kendi sınıf. Şeylerin şu anki haliyle, kapama sınıfının yöntemlerine/özelliklerine erişmek için c1 kapağının açık bir yolu yoktur.
Bu bir yerde belgelenmiş bir şey mi (Swift kitabını okudum ve hiçbir şey bulamadım), ya da bir yere yerleştirilmesi gereken bir türden bir beta-derleyici hatası mı?
Denedim ve bu derleyici hatasını aldım: 'SomeVC ->() -> SomeVC!' 'name' adlı bir üye yok. ** Fakat **, kodunuz benimkiyle bir tane daha farklı - @lazy keywoard/directive/ne olursa olsun. Bunu ** c1 ** kapama tanımının önüne eklediğimde, işe yaradı, ** ismine bile ihtiyacım yok ** var. Bu daha da kafa karıştırıcı, tembel initlerin burada bir şeyle ne alakası var? – wujek
Güncellenmiş yanıtımı kontrol edin. özellikle @lazy –
Yani bu bir derleyici hata gibi görünüyor, değil mi? – wujek