我正在尝试编写一对函数来将String
转换为[UInt8]
字节数组,然后再返回。
作为来自[UInt8] -> String
的函数的一部分,我正在尝试将单个Int32
转换为Character
。
let num : Int32 = 5
let char = Character(_builtinUnicodeScalarLiteral: num)
但我收到了这个奇怪的错误:
error: cannot convert value of type 'Int32' to expected argument type 'Int32'
let char = Character(_builtinUnicodeScalarLiteral: num)
^~~
编辑:我设法使用不同的代码编写我的函数,但我仍然对错误的含义感到好奇。
答案 0 :(得分:1)
您应该避免使用前缀为_
的类型,方法和初始化程序,因为它们是私有的,并且是实现细节。对于名称中包含builtin
的任何内容也是如此。
Character
期望UnicodeScalar
可以从UInt32
(以及UInt8
)构建:
let num : UInt32 = 65
let g = Character(UnicodeScalar(num))
print(g) // prints 'A'
您的错误发生是因为您传递Int32
而Swift期望Builtin.Int32
,这是一种不同的类型。错误信息不够清楚。
答案 1 :(得分:0)
你可以这样使用那个构造函数
let num: Int32 = 5
let g = Character(_builtinUnicodeScalarLiteral: num.value)