gpt4 book ai didi

swift - 有没有比使用 switch 语句更好的方法来快速访问变量的不同属性?

转载 作者:行者123 更新时间:2023-11-30 12:51:10 25 4
gpt4 key购买 nike

我有这段代码,它使用 for 循环迭代图像的每个像素,然后根据用户选择更改红色、绿色或蓝色 channel 的值。

我使用 switch 语句来选择 channel ,并在 for 循环中迭代每个像素以获得该像素适当的颜色属性。感觉很笨拙,但我想不出一种方法来简化它。

是否有另一种方法来访问该属性,以便我可以消除 switch 语句,而只使用一个 for 循环来根据用户选择选择正确的像素颜色?

func applyFilterTo(image:UIImage,forColor:String, withIntensity:Int) -> RGBAImage {
var myRGBA = RGBAImage(image:image)!
switch forColor {
case "RED":
for x in 0..<myRGBA.width {
for y in 0..<myRGBA.height {
let pixelIndex = y * myRGBA.width + x
var pixel = myRGBA.pixels[pixelIndex]
let newValue = Double(pixel.red) + (Double(withIntensity)/100)*Double(pixel.red)
myRGBA.pixels[pixelIndex].red = UInt8(max(0,min(255,newValue)))
}
}
...
}

对于其他选项重复上述内容,但唯一改变的是我选择的属性(红色、蓝色、绿色)。更好的方法来做到这一点?

最佳答案

实现此目的的一个好方法是将 switch 语句替换为 multiple dispatch ,例如Visitor Pattern 。根据 switch 语句中的选项数量,switch 语句是最容易阅读和理解的。

关于swift - 有没有比使用 switch 语句更好的方法来快速访问变量的不同属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40953489/

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