var bigNum = [2,34,5].remove(at: 2)
错误:
Playground执行失败:错误:CalculatorPlayGround.playground:35:14:错误:无法对类型为'[Int]'的不可变值使用mutating成员 var bigNum = [2,34,5] .remove(at:2)
但是
var bigNum = [2,34,5]
var b = bigNum.remove(at: 2)
没问题。
有什么区别?为什么它适用于第二种情况?
答案 0 :(得分:2)
constant
尝试 mutate 您调用它的数组。
当您像第一个示例(let array = [2, 34, 5] //not mutable
)中那样创建数组时,它会创建一个不可变的 var array = [2, 34, 5] //mutable
,就好像您要创建它一样:
bigNum
如果强制它将数组创建为变量,则 可变:
bigNum
注意强>
我不确切地知道你要做什么,但是[2, 34]
让我假设你正在尝试从阵列中获取一个数字?因为现在,fieldset legend {
text-align: center;
padding: 0 10px;
}
.table-wrap {
width: 100%;
table-layout: fixed;
}
.table-wrap > tr > td {
width: 50%;
}
.table-wrap table {
width: 100%;
}
.table-wrap table .element {
position: relative;
}
.table-wrap table .element:after {
content: '';
position: absolute;
left: 0;
bottom: 2px;
width: 100%;
border-bottom: 1px dotted #000;
}
.table-wrap table .element .item {
position: relative;
background-color: #FFF;
padding: 2px;
z-index: 1;
top: 2px;
}
.table-wrap table .element .price {
position: absolute;
right: 0;
background-color: #FFF;
padding: 2px;
z-index: 1;
}
将成为此数组:<fieldset>
<legend>Standard deduction table</legend>
<table class="table-wrap">
<tr>
<td>
<table>
<tr>
<td>
<div class="element">
<span class="item">Single (cannot be claimed)</span><span class="price">$ 8,000</span>
</div>
</td>
</tr>
<tr>
<td>
<div class="element">
<span class="item">Head of household</span><span class="price">$ 11,200</span>
</div>
</td>
</tr>
</table>
</td>
<td>
<table>
<tr>
<td>
<div class="element">
<span class="item">Qualifying window</span><span class="price">$ 16,050</span>
</div>
</td>
</tr>
<tr>
<td>
<div class="element">
<span class="item">Married filing seperate returns</span><span class="price">$ 8,000</span>
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</fieldset>
而不仅仅是数字。
答案 1 :(得分:1)
[2,34,5]
本身就是 literal ,因此在Swift中是不可变的(即你不能写[2,34,5].remove(at: 2)
)。要应用变异函数,首先需要使用var
关键字将数组存储在可变容器中:
var bigNum = [2,34,5]
只有在这样做之后,您才可以在可变bigNum
上使用变异功能.remove(at:)
。