我在 swift 中有以下功能:
func f() -> Int
{
let a = String("a")
let b = a.unicodeScalars
println(b[b.startIndex].value)
//return b[b.startIndex].value
return 1
}
如果我取消注释第一个 return 语句并注释第二个 return 语句,则会出现编译器错误:
找不到成员“值”
为什么即使我可以在 println 函数调用中访问该成员,也会发生这种情况?
EDIT:
为了使问题更清楚,请考虑以下代码:
struct point {
var x: UInt32
var y: UInt32
init (x: UInt32, y: UInt32) {
self.x = x
self.y = y
}
}
func f () -> Int {
var arr = [point(x: 0, y: 0)]
return arr[0].x
}
在这种情况下,编译器错误是:
UInt32 无法转换为 Int
我的问题是:即使两种情况下问题相同,为什么编译器错误却不同?
value
返回一个UInt32
。将其投射到Int
.
return Int(b[b.startIndex].value)
或者,您可以让该函数返回一个UInt32
正如@GoodbyeStackOverflow 提到的。
func f() -> UInt32
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)