【问题标题】:Why does playground prepend getter results with "some"为什么操场在吸气剂结果前面加上“一些”
【发布时间】:2014-07-07 06:53:36
【问题描述】:

我将斯坦福纸牌游戏教程的 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 函数中返回?

【问题讨论】:

    标签: ios xcode swift ios8 swift-playground


    【解决方案1】:

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

    getSuit 只返回“spade”的原因是它被定义为-&gt; String。如果你把它改成-&gt; String?,那么你会得到同样的结果——(some "spade")

    如果您将您的行更改为cardtest.suit!,那么您将获得值“spade” - !解开可选值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 2018-11-16
      • 1970-01-01
      • 2018-04-05
      • 2016-10-03
      相关资源
      最近更新 更多