gpt4 book ai didi

ios - 我如何从 while 循环中获取数据

转载 作者:行者123 更新时间:2023-11-28 10:58:22 26 4
gpt4 key购买 nike

标题几乎说明了一切。

我有一个生成随机 RGB 值并转换为颜色的函数。

我只想要特定亮度范围内的颜色,所以我使用 while 循环创建 RGB 值,然后检查亮度,我希望它一直循环直到它生成亮度范围内的颜色。

我的问题是我不知道如何从 while 循环中获取数据以用作整个函数的一部分

编辑:下面的代码不起作用,while 循环没有返回 randomcolor 的值,Xcode 只是给出一个错误,说明它在初始化之前正在使用。即使我将 return 语句向上移动到 for 循环中,我也只是得到一个整体语句错误,提示我没有返回 UIcolor。我要做的是从 while 循环中获取颜色值,以便它可以在 while 循环之外使用。

func randomColor() -> UIColor{
var randomRed:CGFloat
var randomGreen:CGFloat
var randomBlue: CGFloat
var randomcolor: UIColor
var lum: CGFloat = 0.0
while lum < 50.0 {
randomRed = CGFloat(arc4random_uniform(256))
randomGreen = CGFloat(arc4random_uniform(256))
randomBlue = CGFloat(arc4random_uniform(256))
lum = sqrt(randomRed * randomRed * 0.241 + randomGreen * randomGreen * 0.691 + randomBlue * randomBlue * 0.068)
if lum > 50.0{
let color = rC(randomRed: randomRed, randomBlue: randomBlue, randomGreen: randomGreen)
randomcolor = color

}
}
return randomcolor
}

最佳答案

您的问题是您在函数开始时声明了变量,但没有初始化它们。将在 while 循环内为它们分配一个值,但循环可能执行零次,导致 randomcolor 在您尝试保留它之前未被初始化。

现在,你和我可以查看这段代码并看到 lum 初始化为 0,因此 while 将至少执行一次,但 Swift 不会那样工作。它只是看到唯一的赋值是在一个条件 block 内,所以它感到不安。

你可以稍微简化你的代码,去掉 if 语句:

func randomColor() -> UIColor {
var randomRed:CGFloat = 0.0
var randomGreen:CGFloat = 0.0
var randomBlue:CGFloat = 0.0
var lum: Float = 0.0

while lum < 50.0 {
randomRed = CGFloat(Float(arc4random_uniform(256)))
randomGreen = CGFloat(arc4random_uniform(256))
randomBlue = CGFloat(arc4random_uniform(256))
lum = Float(sqrt(randomRed * randomRed * 0.241 + randomGreen * randomGreen * 0.691 + randomBlue * randomBlue * 0.068))
}

return rC(randomRed: randomRed, randomBlue: randomBlue, randomGreen: randomGreen)
}

关于ios - 我如何从 while 循环中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41993143/

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