Swift Dynamic Type Checking für Strukturen?

Ich bin verwirrt über die dynamische Typprüfung in Swift.

Speziell habe ich einen verrückten Fall, in dem ich im Wesentlichen eine Funktion schreiben (oder finden) möchte:

func isInstanceOf(obj: Any, type: Any.Type) -> Bool

In Objective-C ist diesisKindOfClass, aber das wird nicht funktionieren, weilAny.Type enthält Swift-Strukturen, die keine Klassen sind (viel wenigerNSObject Unterklassen).

Ich kann Swift nicht benutzenis hier, weil das einen fest codierten Typ erfordert.

Ich kann nicht @ verwendobj.dynamicType == type weil das Unterklassen ignorieren würde.

DasSwift book scheint darauf hinzudeuten, dass diese Informationen verloren gehen und für Strukturen überhaupt nicht verfügbar sind:

Classes verfügen über zusätzliche Funktionen, die Strukturen nicht bieten:

...

it @Type-Casting können Sie den Typ einer Klasseninstanz zur Laufzeit überprüfen und interpretieren.

(Im Kapitel "Typumwandlung" heißt es "Typumwandlung in Swift wird mit den Operatoren" is "und" as "implementiert". Es scheint also eine umfassendere Definition von "Typumwandlung" zu geben alsn anderen Sprach.)

Allerdings kann es nicht wahr sein, dassis/as Arbeiten Sie nicht mit Strukturen, da Sie Strings und Ints in ein @ einfügen könne[Any], und ziehen Sie sie später heraus, und verwenden Sieis String oderis Int um herauszufinden, was sie waren. Das Type Casting-Kapitel des Swift Book macht genau das!

Gibt es etwas, das so mächtig ist wieisKindOfClass aber für alle Swift-Instanzen? Diese Information muss zur Laufzeit noch vorhanden sein, oder?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage