2016-10-05 1 views
0

Beim Betrachten der Dokumentation für ExpressibleByStringLiteral bin ich auf ExpressibleByExtendedGraphemeClusterLiteral gestoßen. Während ich verstehe, dass die Implementierung der früheren erlaubt die Verwendung von String-Literale, um etwas anderes als die String Art zu initialisieren, bin ich nicht sicher, was letzteres verwendet wird.Was ist ein GraphemeCluster und was macht ExpressibleByExtendedGraphemeClusterLiteral?

In der Tat, ich bin mir nicht sicher, was ein Graphem-Cluster ist - kann jemand erklären, was es ist und wie es sich auf das Protokoll bezieht, welche Funktionalität bietet es, wenn es implementiert wird?

+1

Haben Sie sich https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Strings/Articles/stringsClusters.html und https://developer.apple.com/reference/swift/expressiblebyextendedgraphemclusteriteral angesehen ? – user28434

+0

hatte ich nicht, aber ich habe jetzt, danke. – Vamos

Antwort

1

Ein Graphem-Cluster ist eine Sammlung von Symbolen, die zusammen ein einzelnes Zeichen darstellen, das der Benutzer innerhalb einer Zeichenfolge auf dem Bildschirm sieht. Sie besteht im Allgemeinen aus einem "Basiszeichen" plus dem, was Apple "Kombinationszeichen" nennt, und wird beispielsweise verwendet, wenn kein vorkompo- niertes einzelnes Unicode-Zeichen vorhanden ist, das die Aufgabe für Sie übernehmen könnte.

Wenn Graphem-Cluster in Strings verwendet werden, müssen Sie besonders darauf achten, dass alle Funktionen, die nach Teilstrings usw. suchen, die Grenzen zwischen Clustern korrekt abgrenzen können.

können Sie einige Beispiele sehen hier:

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html

Einhaltung des Protokolls ExpressibleByExtendedGraphemeClusterLiteral bedeutet einfach, dass das fragliche Zeichen mit einer wörtlichen Graphem-Cluster initialisiert werden kann. Auch hier sehen Sie Beispiele in obigem Link.