将if((loc = [player locateCardValue:8])> - 1)转换为Swift 3

时间:2017-01-18 16:14:47

标签: objective-c swift code-conversion

您如何转换此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的嵌套,它会变得非常混乱。

2 个答案:

答案 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.
}