本文介绍了不可变的值只有变异成员的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经声明使用 VAR 阵列和的init内填充它()。然而,当我尝试变异数组我得到的错误堆告诉我的数组是不可变的。缺少什么我在这里?

 结构甲板{
    VAR卡:卡[] = []    在里面 () {
        因为我在1 ... 4 {
            对于II在1 ... 13 {
                self.cards.append(卡(排名:Rank.fromRaw(二)!,套装:Suit.fromRaw(I)))
            }
        }
    }    FUNC洗牌(){
        VAR shuffledDeck:卡[] = []
        变种数= self.cards.count        因为我在1 ... 52 {
            VAR上限=计数 - 我
            VAR键= INT(arc4random_uniform(UInt32的(限制)));
            shuffledDeck.append(self.cards [关键])
            self.cards.removeAtIndex(键)
        }        self.cards = shuffledDeck
    }
}

我得到的错误:

 游乐场执行失败:错误:
<&REPL GT;:75:22:错误:类型的不可变的值'卡[]'不仅有变异的成员名为removeAtIndex
            self.cards.removeAtIndex(键)
                 ^ ~~~~~~~~~~~~~
<&REPL GT; 78:24:错误:无法在'自我'分配给'卡'
            self.cards = shuffledDeck


解决方案

A 结构被认为是值类型,因此它在默认情况下是不可改变的。如果你想用一个方法去改变它,你必须声明的方法突变。引用雨燕书:

这篇关于不可变的值只有变异成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-14 07:39