我对swift switches中的模式匹配有个问题。我需要检查一个字符串,看看它是否包含一些字符,并根据它返回数据。我有以下(缩短的)代码:
static func getCorrectChords(chord: String) -> [Chord] {
let test = chord
switch test {
case let x where x.contains("-") && x.contains("2"):
return allChords[8]
///// other similar statements
default:
return allChords[0]
}
}如果我将字符串“RE-2”传递给函数,它将切换所有语句,然后使用默认情况。如果我在操场上尝试一个非常相似的代码,它可以正常工作。我有什么地方做错了吗?如何获取正确的返回值?
非常感谢!
编辑:更正了代码中的大括号和缩进。现在答案中就有了解决方案。
发布于 2020-10-20 16:42:50
我找到问题了。我没有正确地隔离问题。问题是我的源数据有一个稍微不同的"-“字符,Swift (正确地说是这样)认为它不等于切换情况下的条件。我对输入进行了消毒,现在它可以正常工作。在操场上,我确实手动编写了输入,所以问题不会出现。
无论如何,非常感谢你!
https://stackoverflow.com/questions/64435958
复制相似问题