Pet*_*994 0 code-duplication swift
我有这个问题很长一段时间.我试图想象3门问题,只是为了乐趣和练习Swift.所以我有:
3扇门,因此所有门都有3种不同的IBAction和3种功能.这些功能都完全相同,但每个代码中只有门的数量不同.所以我想知道,我可以缩短这段代码吗?:
func openSecondChoice(whatDoorIsClickedOn: Int)
{
if whatDoorIsClickedOn == 1
{
if whatDoorIsClickedOn == doorWithNumber
{
UIButtonDoor1.setBackgroundImage( UIImage (named: "doorWithMoney"), for: UIControlState.normal)
}
else
{
UIButtonDoor1.setBackgroundImage( UIImage (named: "doorWithGoat"), for: UIControlState.normal)
}
}
if whatDoorIsClickedOn == 2
{
if whatDoorIsClickedOn == doorWithNumber
{
UIButtonDoor2.setBackgroundImage( UIImage (named: "doorWithMoney"), for: UIControlState.normal)
}
else
{
UIButtonDoor2.setBackgroundImage( UIImage (named: "doorWithGoat"), for: UIControlState.normal)
}
}
if whatDoorIsClickedOn == 3
{
if whatDoorIsClickedOn == doorWithNumber
{
UIButtonDoor3.setBackgroundImage( UIImage (named: "doorWithMoney"), for: UIControlState.normal)
}
else
{
UIButtonDoor3.setBackgroundImage( UIImage (named: "doorWithGoat"), for: UIControlState.normal)
}
}
}
Run Code Online (Sandbox Code Playgroud)
育!这段代码太难看了!例如,如果用户按下door1,我正在调用函数"openSecondChoise(whatDoorIsClickedOn:1)".有没有办法缩短这个?谢谢!我不在这里使用课程,我应该使用它们吗?
通常,当你开始你的后面添加变量名1,2,3等,它的时间来使用数组来代替.这就是数组的用途.
使用uiButtonDoors包含UIButtonDoor1... 的数组UIButtonDoor3,您的函数可能如下所示:
func openSecondChoice(whatDoorIsClickedOn: Int) {
let imageName = whatDoorIsClickedOn == doorWithNumber ? "doorWithMoney" : "doorWithGoat"
uiButtonDoors[whatDoorIsClickedOn - 1].setBackgroundImage(UIImage(named: imageName), for: UIControlState.normal)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |