gpt4 book ai didi

swift - 'ClosedInterval' 没有一个名为 'Generator' 的成员关于 CGFloat 是一个错误吗?

转载 作者:行者123 更新时间:2023-11-28 05:34:27 24 4
gpt4 key购买 nike

我已经在 Apple Dev Forums 上发帖,但没有收到任何回复,如果您已经看到了,我深表歉意。我在 Beta 5 中发现了一个新的(潜在的)错误,我想知道是否有人有解决方法。

这条线在 Beta 4 中运行良好:

for i in 0 ... tiledMap.mapSize.width {

tiledMap.mapSize.width 是一个 CGFloat

在 beta 5 中,Swift 提示:

'ClosedInterval<T>' does not have a member named 'Generator'

如果我将 tileMap.mapSize.width 切换为 25 之类的常量,代码当然可以编译:

for i in 0 ... 25 {

最佳答案

这在Swift书上好像没有定义,但是觉得范围操作符...是合理的和 ..<不适用于 for ... in 中的 float 类型(Float、Double、CGFloat...)循环。我认为这可能会导致令人困惑的期望和困惑,因为 float 类型实际上没有一组合理的值可以在它们的两个值之间的范围内单步执行。

您可能会争辩说范围应该遍历起点和终点之间的整数值,但是 (a) 可能没有给定整数的精确浮点表示,以及 (b) 如果起点和终点之间会发生什么端点首先不是整数? (例如 for i in 0.3846...837.8 )有些人甚至可能期望 for ... in遍历范围内所有可能的浮点值——整数就是这样。

对我来说,这里的语言设计很好:如果你想遍历两个浮点值之间的某些点,你应该将其明确化并使用不同的循环结构,使正在发生的事情更清楚:

for var i:CGFloat = 0; i <= tiledMap.mapSize.width; i++ {

漂浮物也可以跨步,这毫无值(value):

for i in stride(from: 0.0, through: tiledMap.mapSize.width, by: 1.0) {

关于swift - 'ClosedInterval<T>' 没有一个名为 'Generator' 的成员关于 CGFloat 是一个错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25152947/

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