大佬教程收集整理的这篇文章主要介绍了Strings 在 Swift 2中字符串设计的背后思想,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
swift提供高性能,兼容Unicode的String作为标准库的一部分,在 Swift 2.0,String类型不再符合CollectionType协议,曾经String是字符的集合,类似于array。现在,String提供了一个公开字符集视图的charactes属性
为什么会变?虽然模拟一个字符串作为字符集合他看起来很自然,但是String类型的行为还是与Array,Set,Dictionary这种集合类型有很大的区别的。这一直存在着,但是随着Swift 2协议扩展的增加,这些差异使得有必要做出一些基本的改变。
当你添加一一个元素到集合中,你期望集合将包含这个元素。就是说,当你将一个值添加到数组中时,该数组包含该值。就像应用Dictionary或set。然而,当你在一个String中添加一个组合标记字符串,字符串本身的内容被更改。
考虑字符串cafe,其中有四个字符串:c,a,f和e:
var letters: [Character] = ["c","a","f","e"]
var String: String = String(letters)
print(letters.count) // 4
print(String) // cafe
print(String.characters.count) // 4
如果你添加一个组合字符U+0301和´,字符串仍然有四个字符,但是现在最后一位时é
let acuteAccent: Character = "\u{0301}" // ´ COMBINING ACUTE ACCENT' (U+0301)
String.append(acuteAccent)
print(String.characters.count) // 4
print(String.characters.last!) // é
在刚刚这个字符串的字符属性不包涵原始的小写字母e,也不包涵´,知识附加。相反字符串中现在包涵一个小写“e”,带有é:
String.characters.contains("e") // false
String.characters.contains("´") // false
String.characters.contains("é") // true
如果我们像其它集合那样处理字符串,这个结果将会让我们惊讶,添加UIColor.redColor()和UIColor.greenColor()然后设置他包涵UIColor.yellowColor().
然而String基于正则等价平等。如果有相同的语言意思和外观特征,甚至如果他们由不同的Unicode组成,则表示等效。
考虑下韩语协作系统,由24个字母组成,它由24个字母组成,或是Jamo,代表个别的辅音和元音。当把这些字母写出来的时候,每个音节都是字母组合起来的。字符“가”([GA])是由字母“ᄀ”([ ])和“ᅡ”[一]。在swift,字符串是相同的无论是由分解或预作字符序列:
let decomposed = "\u{1100}\u{1161}" // ᄀ + ᅡ
let precomposed = "\u{AC00}" // 가
decomposed == precomposed // true
同样,这种行为与任何快速的收集类型有很大的不同。这将是令人惊讶的价值��和��被认为等于��阵列。
如果我们把“CAFé”前面的例子,由分解的特征【C,A,F,E ]和[´],这里有各种字符串的视图将包括:
有关字符串和字符的快速工作的更多信息,阅读 The Swift Programming Language 和 @L_301_9@.
以上是大佬教程为你收集整理的Strings 在 Swift 2中字符串设计的背后思想全部内容,希望文章能够帮你解决Strings 在 Swift 2中字符串设计的背后思想所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。