Co to jest odpowiednik Swift Java .toString(), aby wydrukować stan instancji klasy?Swift odpowiednik Java .toString()
Odpowiedz
Właściwość description
jest tym, czego szukasz. Jest to właściwość dostępna po wydrukowaniu zmiennej zawierającej obiekt.
Możesz dodać description
do swoich własnych klas, przyjmując protokół CustomStringConvertible
, a następnie wdrażając właściwość description
.
class MyClass: CustomStringConvertible {
var val = 17
public var description: String { return "MyClass: \(val)" }
}
let myobj = MyClass()
myobj.val = 12
print(myobj) // "MyClass: 12"
description
jest również używany podczas wywołania konstruktora String
:
let str = String(myobj) // str == "MyClass: 12"
Jest to zalecana metoda dostępu opis instancji (w przeciwieństwie do myobj.description
, które nie będą działać, jeśli klasa nie implementuj CustomStringConvertible
)
Co z 'String (obj)'? – nielsbot
Istnieje również '.debugDescription' dla bardziej przyjaznej dla programisty wersji – nielsbot
czy ma zastosowanie do struktur? – lmiguelvargasf
Powinieneś użyć String(obj)
.
Bezpośrednio z the documentation for CustomStringConvertible:
UWAGA
String (instancja) będzie działać na przykład dowolnego typu, wracając swojego opisu jeśli instancja bywa CustomStringConvertible. Używanie CustomStringConvertible jako ogólnego ograniczenia lub bezpośredni dostęp do opisu typu zgodnego z jest odradzane.
Wygląda na to, że wystarczy metoda 'description()' z 'CustomStringConvertible'. –
Jeśli możliwe jest użycie struktury zamiast klasy, to nic więcej nie można zrobić.
struct tylko drukuje dobrze sobie z wyjściem
print("\(yourStructInstance)")
lub z klasy tak:
print(String(describing: yourClassInstance))
- 1. Java: enum toString()
- 2. Swift odpowiednik kodu @encode
- 3. Swift odpowiednik "each_cons" Ruby
- 4. Swift Odpowiednik removeObjectsInRange:
- 5. Projekt języka Java z toString
- 6. javascript odpowiednik join() i toString() w języku C#?
- 7. Zastępowanie valueof() i toString() w enum Java
- 8. Sprawdź, czy klasy Java implementują toString()
- 9. Odpowiednik Java operatora Perla ///?
- 10. odpowiednik java swfobject
- 11. Oracle odpowiednik Java Varargs
- 12. C++ odpowiednik Java ByteBuffer?
- 13. java odpowiednik printf ("% *. * F")
- 14. Co to jest odpowiednik Swift dla dispatch_group_create
- 15. Co to jest odpowiednik dispatch_block_t w swift?
- 16. Co to jest odpowiednik Swift 3 NSURL.URLByAppendingPathComponent()?
- 17. Java BigDecimal w Swift
- 18. .NET odpowiednik List.subList języka Java()?
- 19. Python odpowiednik Java to compareTo()
- 20. Odpowiednik Dart'a dla Java StringBuilder
- 21. Java odpowiednik klasy .NET's Version?
- 22. C++ Java statyczny odpowiednik końcowy
- 23. scala odpowiednik java dziedzinie publicznej
- 24. Odpowiednik debugowania w języku Java?
- 25. Czy Java ma odpowiednik StringStream?
- 26. Java odpowiednik Javascript w String.match()
- 27. Java System.currentTimeMillis() odpowiednik w C#
- 28. Android + toString
- 29. Jaka jest różnica między toString ("D2") .ToString ("00")
- 30. Java: Odpowiednik zakresu Pythona (int, int)?
More info @ http://stackoverflow.com/questions/24068506/how-can- i-change-the-textual-display-display-for-a-type-in-swift –