如果然后查看struct UnicodeScalar
,则会看到此初始化程序:
init(_ v: UInt32)
但是您可以做到这一点而没有任何问题:
println(UnicodeScalar("a").value)
它打印出来:
97
但是,如果您尝试这样做:
let a : Character = "a" // With String gave error too
println(UnicodeScalar(a).value)
它给您有关
UnicodeScalar
结构的初始化程序的错误。我假设在第一种情况下,它会在初始化程序中进行隐式强制转换或其他操作,但是为什么在第二种情况下不?
如何使用已声明的变量避免在第二种情况下出错?
最佳答案
"a"
与a
不同。 a
是变量,因此其类型为字符或字符串。 "a"
是文字,其类型为StringLiteralConvertible。这就是为什么可以在无法使用"a"
的地方使用a
的原因。
(在Swift中,一般的文字也是如此。您可以在无法使用值为9的Int变量的地方使用文字9
。)
也许您正在寻找这样的东西:
let c = "a"
let v = c.unicodeScalars
let u = v[v.startIndex]
println(u.value)