gpt4 book ai didi

arrays - 将 switch 语句与数组一起使用时,类型 '[String]' 的表达式模式无法匹配类型 '[String]' 的值

转载 作者:行者123 更新时间:2023-11-28 07:44:57 25 4
gpt4 key购买 nike

我是一名初级程序员,正在快速编写我的第一个脚本。该脚本非常简单,您购买一件商品并将其发送到您的库存。我在使用从数组中获取值的 switch 语句时遇到错误。错误是,

Expression pattern of type '[String]' cannot match values of type '[String]'

由于我正在处理 [String] 值,因此找不到与我遇到的问题类似的任何内容。

这是代码

import UIKit

var money = 200
var status = ""
var inventory:[String] = []
var itemIdentifiers:[Int] = [200,400,450,600,1000,150,250,350,200,400,140,250]

func foodbasic(_ sender: UIButton) {
buy(productName: "Basic Food", priceOfItem: itemIdentifiers[0])
}
func foodgood(_ sender: UIButton) {
buy(productName: "Good Food", priceOfItem: itemIdentifiers[1])
}
func foodbest(_ sender: UIButton) {
buy(productName: "Best Food", priceOfItem: itemIdentifiers[2])
}

func buy(productName: String, priceOfItem: Int){
if money == priceOfItem{
inventory.append(productName)
print ("done")
}
else{
//figure out how to make a "not enough money" type thing
}

}

switch inventory {
case ["Basic Food"] :
print ("you got basic food")
case ["Good Food"] :
print ("you got good food")

default:break
}

最佳答案

来自 Swift CHANGELOG :

Swift 4.1
2018-03-29 (Xcode 9.3)

SE-0143 The standard library types Optional, Array, ArraySlice, ContiguousArray, and Dictionary now conform to the Equatable protocol when their element types conform to Equatable.

这允许将一个数组(可等同的元素)与中的其他数组进行匹配switch 语句,并使您的代码编译。

在早期的 Swift 版本中,您可以使用 == 进行比较:

if inventory == ["Basic Food"] {
print ("you got basic food")
} else if inventory == ["Good Food"] {
print ("you got good food")
}

关于arrays - 将 switch 语句与数组一起使用时,类型 '[String]' 的表达式模式无法匹配类型 '[String]' 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51351978/

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