使用If语句处理多个条件

时间:2020-06-06 17:16:08

标签: swift if-statement

我正在尝试编写一些代码来计算给定基因型的表型。
我在以下代码中声明了基因,该代码具有三个选项,例如ee,Ee和EE。

某些组合会赋予某些​​颜色。最后,我可以使基因改变应用程序顶部的图像,但是我的if语句不断出错。我试过使用blabla.contains,数组等

这些是我试图在我的代码中得到的组合:

  1. 栗子:ext = ee
  2. bay:ext = Ee或EE,以前= AA或Aa
  3. 黑色:ext = EE或Ee和ago = aa

我的代码:

var ext = String("ee")
var ago = String("aa")

func checkPicture() {
    if ext = "EE" || "Ee" && ago == "aa" {
        baseLayer.image = #imageLiteral(resourceName: "black")
        base = String("black")
    }
    if ago == "Aa" || "AA" && ext == "EE" || "Ee" {
        baseLayer.image = #imageLiteral(resourceName: "bay")
        base = String("bay")
        }
    if ext == "ee" {
        baseLayer.image = #imageLiteral(resourceName: "chestnut")
        base = String("chestnut")
    }
}

2 个答案:

答案 0 :(得分:3)

首先请不要从字符串创建字符串,这已经足够

let ext = "ee"
let ago = "aa"

基本上,例如,您必须分别评估每个值

if (ago == "Aa" || ago == "AA") && (ext == "EE" || ext == "Ee") { ...

并使用if - else if


但是,这是一个将switch与元组结合使用的好例子

func checkPicture() {
    switch (ext, ago) {
        case ("EE", "aa"), ("Ee", "aa"):
            baseLayer.image = #imageLiteral(resourceName: "black")
            base = "black"
        case ("EE", "AA"), ("Ee", "AA"), ("EE", "Aa"), ("Ee", "Aa"):
            baseLayer.image = #imageLiteral(resourceName: "bay")
            base = "bay"
        case ("ee", _):
            baseLayer.image = #imageLiteral(resourceName: "chestnut")
            base = "chestnut"

        default: break
    }
}

答案 1 :(得分:1)

您无法ago == "Aa" || "AA"来指定与之比较的内容:ago == "Aa" || ago == "AA",并且在某些情况下,您会误用赋值运算符=而不是使用等于运算符{ {1}}。为确保添加==语句,您只会输入一个:

else if