8 HAZİRAN 2014, Pazar
Swift eşdeğer -[NSObject açıklama] nedir?
Objective-C, kendi sınıf description
bir yöntemi hata ayıklama yardımcı olmak için ekleyebilirsiniz:
@implementation MyClass
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@: %p, foo = %@>", [self class], foo _foo];
}
@end
Hata ayıklayıcı, sonra:
po fooClass
<MyClass: 0x12938004, foo = "bar">
Swift karşılığı nedir? Swift ÇOĞALTMA çıkış yararlı olabilir:
1> class MyClass { let foo = 42 }
2>
3> let x = MyClass()
x: MyClass = {
foo = 42
}
Ama konsola yazdırmak için bu davranışı değiştirmek istiyorum
4> println("x = \(x)")
x = C11lldb_expr_07MyClass (has 1 child)
Bir şekilde println
Bu çıkış temizlemek için var mı? Printable
protokol gördüm:
/// This protocol should be adopted by types that wish to customize their
/// textual representation. This textual representation is used when objects
/// are written to an `OutputStream`.
protocol Printable {
var description: String { get }
}
Bu otomatik olarak "" println
ama durum görünmüyor: hiç görmedim . olacağını düşündüm
1> class MyClass: Printable {
2. let foo = 42
3. var description: String { get { return "MyClass, foo = \(foo)" } }
4. }
5>
6> let x = MyClass()
x: MyClass = {
foo = 42
}
7> println("x = \(x)")
x = C11lldb_expr_07MyClass (has 1 child)
Ve bunun yerine açıkça açıklama ararım:
8> println("x = \(x.description)")
x = MyClass, foo = 42
Daha iyi bir yolu var mı?
CEVAP
8 HAZİRAN 2014, Pazar
Bazı deney yoluyla Printable
DebugPrintable
protokoller gerçek bir uygulama derlerken, ama ÇOĞALTMA ya da Oyun değil keşfettim.
Yan Not: Yazdığın kod doğru ancak bu durumda, muhtemelen DebugPrintable
arıyoruz
Bunu Paylaş:
C Çifti eşdeğer<L,R> Java nedir?...
&Quot;python3 eşdeğer-m SimpleHTTPServ...
&Quot;Objective-C eşdeğer olabilirdi n...
'in Ctrl + O kısayol Eclipse eşde...
`İzin ver` ve `var` swift arasındaki f...