为什么游乐场会使用"某些"

时间:2014-07-07 06:53:36

标签: ios xcode swift ios8 swift-playground

我将斯坦福大学卡片游戏教程的Objective C代码翻译成Swift,并在Playground玩游戏进行检查。

但是,当我调用我的PlayingCard实例的属性getter时,Playground会将结果添加到" some":

class PlayingCard:Card{


    var suit:String? = "?"
    var rank:Int?

    func getSuit() -> String{
        return self.suit!
    }

    func setSuit(suit:String){

        let validity_check = self.validSuits.contains(suit)
        if validity_check{
            self.suit = suit
        }

    }


    func setRank(rank:Int){
        if rank <= maxRank{
            self.rank = rank
        }
    }



}



var array:Array = ["hi", "world"]

array.contains("HI")


let cardtest = PlayingCard()
cardtest.suit => returns {some "spade"}
cardtest.getSuit() => returns "spade"
cardtest.rank => returns {some 10}

这是什么意思?为什么它会在属性getter中返回,而不是在自定义getter函数中返回?

1 个答案:

答案 0 :(得分:2)

因为您的属性被定义为String?,所以它的值实际上是一个OptionalString枚举,用于指示它是否具有值(某些)及其值。

getSuit刚刚返回&#34; spade&#34;是它被定义为-> String。如果您将其更改为-> String?,那么您将获得相同的结果 - (some "spade")

如果您将行更改为cardtest.suit!,那么您将获得值&#34; spade&#34; - !展开可选值