Swift 中的 Unichar 变量

Unichar variable in Swift

如何在 Swift 中定义一个 unichar 类型变量 likes '[=13=]' '\n' in Objective-C ?

在Swift,

func previousCharacter() -> unichar {
    return "\n"     //Error
}

编译器报错:

Cannot convert return expression of type 'String' to expected return type 'unichar'

但在Objective-C中,直接这样做会更容易。

在Swift中,字符文字的类型为Character

let exclamationMark: Character = "!"

Strings and Characters

高级读者:

您还可以扩展 unichar 以接受字符文字:

extension unichar : UnicodeScalarLiteralConvertible {
    public typealias UnicodeScalarLiteralType = UnicodeScalar

    public init(unicodeScalarLiteral scalar: UnicodeScalar) {
        self.init(scalar.value)
    }
}


let newLine: unichar = "\n"
let whitespaces = NSCharacterSet.whitespaceAndNewlineCharacterSet()

print("C is whitespace \(whitespaces.characterIsMember(newLine))")

但是,请注意 Swift 文字使用 4 个字节,而 unichar 仅使用 2 个字节,因此某些字符在转换为 unichar 时会被截断。