您如何转换此Objective-C
if ((loc = [player locateCardValue:8]) > -1) {
到Swift 3?
[player locateCardValue]
返回找到卡'8'
的位置的整数。返回-1
表示找不到卡'8'
。
我可以用......
let loc = player.locateCard(withValue: 8)
if loc > -1 {
但我有多个IF的嵌套,它会变得非常混乱。
答案 0 :(得分:5)
也许最好的方法不是“按原样”转换它,而是让它更像Swift。
在这种情况下,我想我会更改locateCard
以返回Optional<Int>
并在找不到卡时返回nil
。
func locateCard(withValue: Int) -> Card? {
// return the position if found, nil otherwise
}
然后,你可以写
if let card = player.locateCard(withValue: 8) {
}
答案 1 :(得分:2)
您最好的选择是转换locateCardValue
以返回可选Int?
。然后你可以简单地做
if let loc = player.locateCard(withValue: 8) {
// ...
}
或者您可以使用switch语句
switch player.locateCard(withValue: 8) {
case -1: print("No card.")
case 1: // ...
// etc.
}