Swift不可变数组
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不可变数组的更多相关文章
- iOS -Swift 3.0 -Array(数组与可变数组相关属性及用法)
// // ViewController.swift // Swift-Array // // Created by luorende on 16/9/12. // Copyright © 2016年 ...
- Swift学习—字符串&数组&字典
字符串 OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC中字符串@"",Swift中字符串"" ...
- swift学习之数组
首先数组的定义:以有序的方式存储同样类型的值 (1)数组的简写(shorthand)语法 你能够通过Array<Element>,在这里,Element时数组存储元素的值的类型.也能够通过 ...
- 可变数组NSMutableArray
//创建一个空的可变数组 NSMutableArray *array = [NSMutableArray array]; //向数组里面添加对象 [array addObject:@"< ...
- Objective - C NSArray不可变数组和NSMutableArray可变数组
OC中存储数据最常用 的两个容器就是数组和字典,而作为最常用的,应该了解这所有的特点,及用法. OC中的数组是一个容量,有序的管理了一系列元素,并且存放在数组里的元素,必须是对象类型. 不可变数组,见 ...
- NSArray与NSMutableArray 数组与可变数组
1.NSArray 是一个父类,NSMUtableArray是其子类,他们构成了OC的数组.2.NSArray的创建NSArray * array = [[NSArray alloc]initWith ...
- objective-c可变数组
1 #pragma mark ---------------可变数组----------------- 2 // 可以在数组里面进行增删改的操作 3 // 4 // ...
- 【转】不可变数组NSArray与可变数组NSMutableArray
原文网址:http://www.jianshu.com/p/1ad327f56d1d 不可变数组NSArray //创建一个空数组 NSArray *array = [NSArray array]; ...
- OC4_可变数组
// // main.m // OC4_可变数组 // // Created by zhangxueming on 15/6/11. // Copyright (c) 2015年 zhangxuemi ...
随机推荐
- python学习笔记24(路径与文件 (os.path包, glob包))
os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法. >>> import os.path >>> path = '/home/ ...
- 设计模式之:组合模式(Composite)
支持原创:http://blog.csdn.net/hguisu/article/details/7530783 设计模式(七)组合模式Composite(结构型) 1. 概述 在数据结构里面,树结构 ...
- OpenSessionInViewFilter 的配置及替代方案(转)
鸣谢:http://justsee.iteye.com/blog/1174999,http://blog.csdn.net/sunsea08/article/details/4545186 Sprin ...
- JS中如何定义全局变量
三种方法 1.在js的function外定义一个变量 var name='测试'; function XX(){ alert(name); } 2.不使用var,直接给定义变量,隐式的声 ...
- WCF获取客户端IP和端口
//提供方法执行的上下文环境 OperationContext context = OperationContext.Current; //获取传进的消息属性 MessageProperties pr ...
- 关于Java中try-catch-finally-return语句的思考
我们知道return语句用在某一个方法中,一是用于返回函数的执行结果,二是用于返回值为void类型的函数中,仅仅是一个return语句(return ;),此时用于结束方法的执行,也即此return后 ...
- POJ 1797 Heavy Transportation(Dijkstra)
http://poj.org/problem?id=1797 题意 :给出N个城市M条边,每条边都有容量值,求一条运输路线使城市1到N的运输量最大. 思路 :用dijkstra对松弛条件进行变形.解释 ...
- POJ2739Sum of Consecutive Prime Numbers
http://poj.org/problem?id=2739 题意 :一个正整数能够表示为一个或多个连续素数和,给你一个正整数,让你求,有多少个这样的表示.例如:整数53有两种表示方法,5+7+11+ ...
- IText 生成简单表格(报表)doc文档 单元居中
IText生成doc文档需要三个包:iTextAsian.jar,iText-rtf-2.1.4.jar,iText-2.1.4.jar 亲测无误,代码如下所示: import com.lowagie ...
- c++ string assign =
C++ string类的成员函数,用于拷贝.赋值操作,它们允许我们顺次地把一个string 对象的部分内容拷贝到另一个string 对象上. string &operator=(const s ...