了解Swift中的UnicodeScalar初始值设定项
如果我们再看看结构UnicodeScalar
,我们看到这个初始化器:
init(_ v: UInt32)
但是你可以做到这一点没有任何问题:
println(UnicodeScalar("a").value)
它打印出来:
97
但是,如果你尝试这样做:
let a : Character = "a" // With String gave error too println(UnicodeScalar(a).value)
它给你一个关于UnicodeScalar
结构的初始值设定的UnicodeScalar
。
我假设在第一种情况下,它会在初始化程序中进行隐式转换或其他操作,但是为什么不在第二种情况下呢?
如何避免使用声明的variables在第二个案件的错误?
"a"
不是像a
。 a
是一个variables,所以它的types是Character或String。 "a"
是一个文字 ,它的types是StringLiteralConvertible。 这就是为什么"a"
可以用在不能使用的地方。
(对于Swift中的常规字面也是如此,你可以在不能使用值为9的Intvariables的地方使用字面值9
)
也许你正在寻找这样的东西:
let c = "a" let v = c.unicodeScalars let u = v[v.startIndex] println(u.value)