使用If语句处理多个条件

问题描述 投票:0回答:1

我试图写一些代码来计算给定基因型的表型。我已经在下面的代码中声明了基因,它有三个选项,例如ee、Ee和EE。

某些组合会给出某些颜色。我终于可以让基因改变应用程序顶部的图像了,但我的if语句一直出错。 我试过使用blabla.contains,数组等。

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

  1. 栗子:ext = ee
  2. bay:ext=Ee或EE, ago=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")
    }
}
swift if-statement
1个回答
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
投票

你不能这样做 ago == "Aa" || "AA" 你必须指定你的比较对象。ago == "Aa" || ago == "AA",在某些情况下,你误用了赋值运算符。= 而不是使用等于运算符 ==. 为了确保你只在一个上输入,如果加上了 else if 声明:

func checkPicture() {
    if ext == "ee" {
        //            chestnut
    } else if ago == "aa" {
        //            black
    } else {
        //            bay
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.