1

如何unichar在 Swift 中定义类型变量喜欢'\0' '\n'在 Objective-C 中?

在斯威夫特,

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

编译器给了我一个错误:

无法将“String”类型的返回表达式转换为预期的返回类型“unichar”

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

4

1 回答 1

2

在 Swift 中,字符文字的类型是Character.

let exclamationMark: Character = "!"

请参阅字符串和字符

对于高级读者:

您还可以扩展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.

于 2015-06-15T08:05:25.120 回答