swift - Swift switch 语句中的字符串模式匹配
问题描述
我在快速开关中遇到模式匹配问题。我需要检查一个字符串以查看它是否包含一些字符并据此返回数据。我有以下(缩短的)代码:
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(正确地)认为它不等于 switch 案例中的条件。我清理了输入,现在它可以正常工作了。在操场上,我确实手动编写了输入,因此没有出现问题。
无论如何,非常感谢!
推荐阅读
- xamarin.forms - Xamarin.Forms.Build.Tasks.GetTaskAbi
- python - Replacing backward slash in python / pandas
- yii2 - Call function in view Yii2 with Select2
- sql - 获取最近 6 个月内没有交易的所有 id
- r - 使用绘图按钮后的图形输出
- php - 如何在 Laravel 中检查系统是否关闭
- tensorflow - 如何使用 TensorFlow 的 WALSMatrixFactorization
- angular - 无法在角度 2 中使用 *ngFor="let admin of admins" 获取对象值
- python - 用于将相同类型的组视为一个匹配而不是两个匹配的正则表达式
- javascript - (ESLint) JSDoc 语法错误 - Uncaught SyntaxError: Unexpected identifier when used with SSHTML files