Kiedy próbujesz zrozumieć program lub w niektórych przypadkach narożnych, warto być w stanie dowiedzieć się, jakiego typu jest coś. Wiem, że debuger może wyświetlać pewne informacje o typie, i zwykle możesz polegać na wnioskowaniu o typie, aby uniknąć nieokreślania typu w takich sytuacjach, ale nadal naprawdę chciałbym mieć coś takiego jak Pythontype()
dynamicType (patrz to pytanie )
Aktualizacja: zostało to zmienione w najnowszej wersji Swift, obj.dynamicType
teraz zawiera odniesienie do typu, a nie wystąpienia typu dynamicznego.
Ten wydaje się najbardziej obiecujący, ale do tej pory nie byłem w stanie znaleźć faktycznego typu
class MyClass {
var count = 0
}
let mc = MyClass()
# update: this now evaluates as true
mc.dynamicType === MyClass.self
Próbowałem również za pomocą odniesienia do instancji klasy nowy obiekt, który robi pracę, ale dziwnie dał mi błąd mówiąc, muszę dodać required
inicjator:
Pracuje:
class MyClass {
var count = 0
required init() {
}
}
let myClass2 = MyClass.self
let mc2 = MyClass2()
Jednak wciąż jest to tylko mały krok w kierunku odkrycia rodzaju dowolnego obiektu
edycja : usunąłem znaczną liczbę nieistotnych już szczegółów - spójrz na historię edycji, jeśli jesteś zainteresowany :)
print(mc)
czy dump(mc)
będzie wydrukować podsumowanie (które można uzyskać z toString(mc)
lub reflect(mc).summary
), która będzie zawierać nazwę klasy gdzieś tam. Ale nie jest jasne, jak samemu zdobyć nazwę klasy.