gpt4 book ai didi

swift - float2 扩展错误,在存储属性初始化之前自行使用?

转载 作者:可可西里 更新时间:2023-11-01 01:05:06 24 4
gpt4 key购买 nike

我回顾了我在 Xcode 7.0 beta 3 (7A152u) 中所做的一个项目,我在其中使用了以下 extension 添加了一个 CGPoint 初始化为 float2(下面的代码与 WWDC2015 演示项目 DemoBots 中使用的代码相同)早在 7 月下旬,它运行良好,但现在使用 Xcode 7.0 GM (7A218) 我得到错误:

TEST.swift:32:11: 'self' used before all stored properties are initialized

我查看了各种发行说明,但找不到任何相关内容,任何人都可以帮助我或为我指明正确的方向,说明为什么现在失败以及如何解决它?

// Extend `float2` to add an initializer from a `CGPoint`.
extension float2 {
// MARK: Initialization

/// Initialize with a `CGPoint` type.
init(_ point: CGPoint) {
x = Float(point.x) // << Above Error Here
y = Float(point.y) // << Above Error Here
}
}

最佳答案

如果您使用以下方法,问题将得到解决:

init(_ point: CGPoint) {
self = float2(x: Float(point.x), y: Float(point.y))
}

init(_ point: CGPoint) {
self.init(x: Float(point.x), y: Float(point.y))
}

或者,正如 Martin R 所指出的:

init(_ point: CGPoint) {
self.init()
x = Float(point.x)
y = Float(point.y)
}

第二种方式用在latest DemoBots project中的float2扩展中.

正如 Stephen Canon 在他下面的评论中所说,这是可行的,因为:在 WWDC 种子中,simd 结构将 native 标量作为组件,因此以这种方式初始化可行。在后来的种子中,simd 结构由 LLVM 内置向量支持,组件 xy 等只是 { get set }计算属性。

关于swift - float2 扩展错误,在存储属性初始化之前自行使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32522834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com