我在swift开关中遇到模式匹配问题。我需要检查一个字符串,看看它是否包含一些字符,并根据这些字符返回数据。我有以下(缩短的(代码:
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"传递给函数,它会切换所有语句,然后使用默认情况。如果我在Playgrounds中尝试一个非常相似的代码,它会正确工作。我做错了什么吗?如何获得正确的返回值?
非常感谢!
编辑:更正了代码中的大括号和缩进。解决方案现在就在答案中。
我发现了这个问题。我没有正确地孤立这个问题。问题是我的源数据有一个稍微不同的"-"Swift(正确地认为(认为不等于切换情况下的条件的字符。我对输入进行了消毒,现在它可以正常工作了。在操场上,我确实手动编写了输入,所以问题没有出现。
无论如何,非常感谢你!