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 = "!"
高级读者:
您还可以扩展 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
时会被截断。
如何在 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 = "!"
高级读者:
您还可以扩展 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
时会被截断。