Arrays apple swift-从变量引用数组
新手到斯威夫特,一个做作的例子。 我有一个菜单类别数组,它们依次有菜单项 我想遍历类别,然后读取项目子数组的元素。不知道将元素引用为数组的语法 第10行第18列出错:类型“字符串”不符合协议“序列” 报价中的(项目){Arrays apple swift-从变量引用数组,arrays,swift,Arrays,Swift,新手到斯威夫特,一个做作的例子。 我有一个菜单类别数组,它们依次有菜单项 我想遍历类别,然后读取项目子数组的元素。不知道将元素引用为数组的语法 第10行第18列出错:类型“字符串”不符合协议“序列” 报价中的(项目){ var menuOffering = ["drinks" , "breakfastEntree"] var drinks: Set = ["water","milk","coffee","tea","diet coke"] var breakfastEntree: Set =
var menuOffering = ["drinks" , "breakfastEntree"]
var drinks: Set = ["water","milk","coffee","tea","diet coke"]
var breakfastEntree: Set = ["eggs", "bacon", "sausage","pancakes"]
for ( offering) in menuOffering {
print ("\(offering)")
for (item) in offering { ERROR
print ("\(item)")
}
}
menuOffering
是一个String
数组,因为您在引号中定义了它。在这种情况下,drinks
和breakfastEntre
。因此您试图在字符串上迭代并得到错误。相反,请按如下方式定义数组menuOffering
:
var menuOffering = [drinks , breakfastEntree] // without quotes
现在它将是一组集合。
您修改的代码应该是:
var drinks: Set = ["water","milk","coffee","tea","diet coke"]
var breakfastEntree: Set = ["eggs", "bacon", "sausage","pancakes"]
var menuOffering = [drinks , breakfastEntree]
for ( offering) in menuOffering {
for (item) in offering {
print ("\(item)")
}
}
menuOffering是一个集合数组。如果没有引号,变量名现在可以访问集合中包含的值,并且可以在下面看到的嵌套形式中对它们进行迭代
let drinks: Set = ["water", "milk", "coffee", "tea", "diet coke"]
let breakfastEntree: Set = ["eggs", "bacon", "sausage", "pancakes"]
let menuOffering = [drinks, breakfastEntree]
for offering in menuOffering {
for item in offering {
print(item)
}
}
如果您不想在字符串中包含变量名,也可以打印出我在上面做过的变量,如下所示:
print("string: \(variableName)")
确保在“print”和括号之间不包含空格。根据您的描述,这里可能不需要集合。您可能只需要数组,因此可以删除
:Set
,让类型推断为您完成工作。集合是无序的(因此可以按任何顺序打印),并且通常在集合可能非常大时使用,常见的操作是“测试X是否是集合的成员”。对于日常使用,您通常需要阵列(这就是为什么如果您不要求:set
,您可以免费获得阵列)。对于您的实际问题,请参阅下面的triple.s。感谢您提供的解决方案…现在跟踪