如何在Swift中定义unichar
类型变量,如Objective-C中的'\0'
'\n'
?
在斯威夫特,
func previousCharacter() -> unichar {
return "\n" //Error
}
编译器给了我一个错误:
无法将'String'类型的返回表达式转换为预期的返回类型'unichar'
但是在Objective-C中,直接执行此操作会更容易。
答案 0 :(得分: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
时会截断某些字符。