-2

我正在将一个用 Objective-C 编写的纸牌游戏转移到 Swift。我的手类中有 2 个阵列,大小均为 3,一个持有 3 张并排向下的卡片,另一个持有位于向下卡片顶部的向上卡片。可以播放向上的牌和未覆盖的向下牌,因此数组可能包含一些牌并且有一些元素为零,因为数组单元正在处理牌的实际位置。这些被声明为

    var downCards: [Card] = []
    var upCards: [Card] = []
    downCards.reserveCapacity(3)
    upCards.reserveCapacity(3)

在 Objective C 中,下面的代码告诉我是否有一张未覆盖的卡片,运行良好:

    if ((handOfCurrentPlayer.upCards[cardLeft] == nil) &&
        (handOfCurrentPlayer.downCards[cardLeft] != nil)) {}

但在 Swift 中,我得到“比较 'Card' 类型的非可选值与 'nil' 总是返回 false”

我对 Swift 很陌生,不知道如何以不同的方式声明数组或使用可选项和解包来检查丢失的卡片(换句话说,nil)。

4

1 回答 1

2

如果数组可以包含nil元素,则必须使用可选类型声明数组

var downCards: [Card?] = []
var upCards: [Card?] = []
于 2020-08-10T20:02:03.047 回答