• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift不可变数组

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift玩转gif发布时间:2022-07-13
下一篇:
swift一句代码补全tableView分割线发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap