愚蠢的初学者Swift问题: 我期待在操场上使用以下3行代码:
let items = ["Apple", "Orange", "Pear"]
items[1] = "Banana" // error here
items
现在错误
error: '@lvalue $T5' is not identical to 'String'
items[1] = "Banana"
我理解在Swift中可以更新 immutable 数组的内容。 我使用XCODE 6.1.1
知道这里发生了什么吗?
由于
基于此线程,这在以前的版本中是可能的: Why in immutable array in swift value can be changed?
答案 0 :(得分:1)
当您编写let
时,您定义了一个不可变变量。请改用var
;这允许您定义一个可变的变量。
答案 1 :(得分:1)
如前所述 - 如果您想更改阵列,请使用var
数组。
稍微低于你发布链接的问题并在里面给出答案:
Swift中的数组已经完全重新设计,具有全部价值 字典和字符串之类的语义一直都在Swift中。这个 解决了各种可变性问题 - 现在是“让...”#39;数组是完全的 不可变的,一个&var;' var'数组是完全可变的 - 正确组合 使用Dictionary和String,并解决其他更深层次的问题。值 如果您习惯使用NSArray或C数组,语义可能会令人惊讶:a 数组的副本现在生成所有的完整和独立的副本 使用有效的懒惰副本实现的元素。这是一个 Array的主要变化,还有一些性能问题 得到解决。有关更多信息,请参阅Swift编程语言 信息。 (17192555)
答案 2 :(得分:0)
使用let
关键字声明常量。
根据定义,不能修改常量。
您想使用var
关键字来声明变量,
因此,将会/可能会有所不同。
来自apple Swift文档:
常量和变量
常量和变量关联名称(例如 maximumNumberOfLoginAttempts或welcomeMessage),值为a 特殊类型(例如数字10或字符串" Hello")。该 一旦设定,常数的值不能改变,而a 变量可以在将来设置为不同的值。
声明常量和变量
必须在使用常量和变量之前声明它们。您 使用let关键字声明常量,使用var声明变量 关键词。这是一个如何使用常量和变量的例子 跟踪用户进行的登录尝试次数:
让maximumNumberOfLoginAttempts = 10
var currentLoginAttempt = 0