Élimine les tracas liés au traitement des tableaux C comme des tuples par Swift

Tâche

Travailler avec des tableaux C de longueur fixe est un peu ennuyeux lors de l'utilisation de la bibliothèque C de Swift. Parce qu'il est traité comme Tuple dans Swift. Le tuple n'est pas itérable, il est donc difficile de faire référence à des éléments. Que faire avec ceci?

Correspondance

Méthode 1: vaincre avec réflexion

Comment convertir Tuple en Array avec réflexion, comme décrit sur https://qiita.com/codelynx/items/83f4b3829267d8d25b07. Il n'y a pas de problème. Cependant, la réflexion est une charge lourde sur le compilateur, ce n'est donc pas une méthode agressive à utiliser.

Méthode 2: vaincre avec un pointeur

var foo_list = func_with_c()
let ptr = UnsafeMutablePointer<Foo>(&foo_list.foo.0)

// "Longueur fixe"Écrivez la taille de. Par exemple, supposons que vous sachiez que la longueur est de 34.
for i in 0..<34 {
    let foo = ptr[i]
    print(foo)
}

Je ne suis pas content d'utiliser var, mais il est compatible avec le compilateur car il ne fait pas de réflexions. Je me demande si j'écris souvent comme ça à moins qu'il n'y ait une raison particulière ..?

Référence: Implémentation UUID de Swift Foundation

Recommended Posts

Élimine les tracas liés au traitement des tableaux C comme des tuples par Swift
Trouvez la valeur approximative de log (1 + x) avec Swift
J'ai traduit [Méthode Clone pour les tableaux Java] comme méthode Clone dans les tableaux Java.
Implémenter la même fonction que C, système C ++ ("cls"); en Java
[Swift5] Comment obtenir un tableau et un ensemble de différences entre les tableaux
Manipulez bien le caractère C ** avec Swift
Ordre de traitement dans le programme