这里有点没太读懂
扩展字符串分隔符
您可以将字符串文字放在扩展分隔符中,这样字符串中的特殊字符将会被直接包含而非转义后的效果。将字符串放在引号("
)中并用数字符号(#
)括起来。例如,打印字符串文字 #"Line 1 \nLine 2"#
会打印换行符转义序列(\n
)而不是给文字换行。
如果需要字符串文字中字符的特殊效果,请匹配转义字符(\
)后面添加与起始位置个数相匹配的 #
符。 例如,如果您的字符串是 #"Line 1 \nLine 2"#
并且您想要换行,则可以使用 #"Line 1 \#nLine 2"#
来代替。 同样,###"Line1 \###nLine2"###
也可以实现换行效果。
扩展分隔符创建的字符串文字也可以是多行字符串文字。 您可以使用扩展分隔符在多行字符串中包含文本 """
,覆盖原有的结束文字的默认行为。例如:
let threeMoreDoubleQuotationMarks = #"""
Here are three more double quotes: """
"""#
[字符串连接 能还是不能?](https://swiftgg.gitbook.io/swift/swift-jiao-cheng/03_strings_and_characters#concatenating-strings-and-characters)

问题:
1. Swift中字符串是值类型的么? 编译的时候是否每次都进行拷贝?
在 Swift 中 String 类型是值类型。Swift 默认拷贝字符串的行为保证了在函数/方法向你传递的字符串所属权属于你,无论该值来自于哪里。你可以确信传递的字符串不会被修改,除非你自己去修改它。
在实际编译时,Swift 编译器会优化字符串的使用,使实际的复制只发生在绝对必要的情况下,这意味着你将字符串作为值类型的同时可以获得极高的性能。
2.字符串是否为空怎么判断?字符串的count和NSString中的length是否相同?
isEmpty
来判断是否为空。字符串的count是character的数量,是Unicode可扩展字符的群集,NSString的length是利用UTF-16表示的十六位代码单元数字。
网友评论