Objective-C编写了2个不同的类来区分不可变数组(NSArray)和可变数组(NSMutableArray):

Swift通过使用常量和变量来区分不可变数组和可变数组。

只要将数组定义为常量,它就是不可变数组,如:

let constantArray = ["a", "b", "c", "d"]

将数组定义为变量,它就是可变数组,如:

var mutableArray = ["e", "f", "g", "h", "i"]

Swift的不可变数组和可变数组的性质与Objective-C几乎是一样的,可见笔者另文:《NSArray和NSMutableArray的copy和MutableCopy

因此,不可变数组虽然无法改变数组本身(也就是不能在数组层面上进行修改,如设法改变数组大小、以及使用append,remove等方法),但是可以改变数组内的元素:

class classA {                        //自定义类classA
var aString: String //classA的实例变量aString init(str: String) { //构造函数
aString = str
}
}
var b: classA = classA(str:"b"); //创建3个classA类型的变量b,c,d
var c: classA = classA(str:"c");
var d: classA = classA(str:"d");
let classAs = [b, c, d] //将b,c,d作为元素定义在一个不可变数组中 var f = classAs[1] //定义一个f变量,并赋其值为classA类型的变量c
print(classAs[1].aString) //输出c的实例变量的值
f.aString = "eeee" //改变f的实例变量的值
print(classAs[1].aString) //再次输出c的实例变量的值

运行结果:

c
eeee

这里可以再做一个验证Swift字符串String类型是值类型的实验:

let intArray = [1, 7, 100, 101, -9, 0]
var myInt = intArray[4]
print(intArray[4])
myInt = 10000000
print(intArray[4]) //Int无疑是值类型,其值不会被改变 let stringArray = ["str1", "str2", "str3", "str4"] //定义一个字符串的不可变数组
var myStr = stringArray[2] //定义一个myStr变量,并赋值为"str3"
print(stringArray[2]) //输出str3
myStr = "anotherString" //修改myStr
print(stringArray[2]) //再次输出str3

运行结果:

-9
-9
str3
str3

Swift不可变数组的更多相关文章

  1. iOS -Swift 3.0 -Array(数组与可变数组相关属性及用法)

    // // ViewController.swift // Swift-Array // // Created by luorende on 16/9/12. // Copyright © 2016年 ...

  2. Swift学习—字符串&数组&字典

    字符串 OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC中字符串@"",Swift中字符串"" ...

  3. swift学习之数组

    首先数组的定义:以有序的方式存储同样类型的值 (1)数组的简写(shorthand)语法 你能够通过Array<Element>,在这里,Element时数组存储元素的值的类型.也能够通过 ...

  4. 可变数组NSMutableArray

    //创建一个空的可变数组 NSMutableArray *array = [NSMutableArray array]; //向数组里面添加对象 [array addObject:@"< ...

  5. Objective - C NSArray不可变数组和NSMutableArray可变数组

    OC中存储数据最常用 的两个容器就是数组和字典,而作为最常用的,应该了解这所有的特点,及用法. OC中的数组是一个容量,有序的管理了一系列元素,并且存放在数组里的元素,必须是对象类型. 不可变数组,见 ...

  6. NSArray与NSMutableArray 数组与可变数组

    1.NSArray 是一个父类,NSMUtableArray是其子类,他们构成了OC的数组.2.NSArray的创建NSArray * array = [[NSArray alloc]initWith ...

  7. objective-c可变数组

     1 #pragma mark ---------------可变数组-----------------  2 //        可以在数组里面进行增删改的操作  3 //  4 //        ...

  8. 【转】不可变数组NSArray与可变数组NSMutableArray

    原文网址:http://www.jianshu.com/p/1ad327f56d1d 不可变数组NSArray //创建一个空数组 NSArray *array = [NSArray array]; ...

  9. OC4_可变数组

    // // main.m // OC4_可变数组 // // Created by zhangxueming on 15/6/11. // Copyright (c) 2015年 zhangxuemi ...

随机推荐

  1. 【socket】Socket的三个功能类TCPClient、TCPListener 和 UDPClient

    Socket的三个功能类TCPClient.TCPListener 和 UDPClient (转) 应用程序可以通过 TCPClient.TCPListener 和 UDPClient 类使用传输控制 ...

  2. ASP.NET中POST数据并跳转页面

    需求:先Post提交数据,然后跳转到目标页面 找了好久才发现这个神奇的类HttpHelper.原理很简单,利用html的from表单拼接,然后执行 使用方法: NameValueCollection ...

  3. java指令集

    0x00 nop      什么都不做 0x01 aconst_null 将null推送至栈顶 0x02 iconst_m1   将int型-1推送至栈顶 0x03 iconst_0   将int型0 ...

  4. google calendar api v3

    google api for .net nuget Install-Package Google.Apis.Calendar.v3 oauth2 for asp.net http://www.code ...

  5. 有关hadoop分布式配置详解

    linux配置ssh无密码登录 配置ssh无密码登录,先要安装openssh,如下: yum install openssh-clients 准备两台linux服务器或虚拟机,设置两台linux的ho ...

  6. (转载)shell日志分析常用命令

    shell日志分析常用命令总结 时间:2016-03-09 15:55:29来源:网络 导读:shell日志分析的常用命令,用于日志分析的shell脚本,统计日志中百度蜘蛛的抓取量.抓取最多的页面.抓 ...

  7. setTimeout浅析

    刚学习javascript的时候,感觉setTimeout很好理解,不就是过n(传入的毫秒数)毫秒,执行以下传入的函数吗?这个理解伴随了我挺长的一段时间,才对setTimeout有了新的认识,请先看下 ...

  8. hdu 3537 Daizhenyang's Coin 博弈论

    详见:http://www.cnblogs.com/xin-hua/p/3255985.html 约束条件6 代码如下: #include<iostream> #include<st ...

  9. 获取Android系统时间

    目的: 输入 2014-09-09 14:02:03    输出 等待:1小时20分 注意: HH:mm:ss 为获取手机 24小时格式的时间  15:03    hh:mm:ss 为12小时模式的时 ...

  10. 【前端学习】【CSS选择器】

    CSS选择器     CSS选择器 CSS(Cascading Style Sheets)是一项出色的技术,它使得网页的结构和表现样式完全分离.利用CSS选择器能轻松地对某个元素添加样式而不改动HTM ...