我试图写一些代码来计算给定基因型的表型。我已经在下面的代码中声明了基因,它有三个选项,例如ee、Ee和EE。
某些组合会给出某些颜色。我终于可以让基因改变应用程序顶部的图像了,但我的if语句一直出错。 我试过使用blabla.contains,数组等。
这些是我在代码中试图得到的组合。
我的代码
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")
}
}
首先请不要从一个字符串中创建一个字符串,这就足够了。
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
}
}
你不能这样做 ago == "Aa" || "AA"
你必须指定你的比较对象。ago == "Aa" || ago == "AA"
,在某些情况下,你误用了赋值运算符。=
而不是使用等于运算符 ==
. 为了确保你只在一个上输入,如果加上了 else if
声明:
func checkPicture() {
if ext == "ee" {
// chestnut
} else if ago == "aa" {
// black
} else {
// bay
}
}