文档章节

swift 数组

法斗斗
 法斗斗
发布于 2016/03/03 12:25
字数 1305
阅读 9
收藏 0
点赞 1
评论 0
//

//  main.swift

//  swift数组

//

//  Created by zhangbiao on 14-6-15.

//  Copyright (c) 2014 理想. All rights reserved.

//


import Foundation


println("数组")


/*

Swift 语言中的数组用来按顺序存储相同类型的数据

*/



//1.定义数组

var numarr:Int[] = [1,3,5,7,9];

var strarr:String[] = ["理想","swift"];




//2.访问和修改数租

//(1)数组长度   访问数组中的某个元素

println("strarr 数租的长度为:\(strarr.count) 数组的 1个值为:\(strarr[0])");

//(2)向数组中追加元素

strarr.append("ios");

//运行结果:[理想, swift, ios]





//(3)使用加法赋值运算符(+=)也可以直接在数组后面添加元素

strarr+="android";

//运行结果:[理想, swift, ios, android]






//(4)直接向数组最后添加一个数组

strarr+=["AAA","BBB","CCC"];

//运行结果:[理想, swift, ios, android, AAA, BBB, CCC]





//(5)使用Index 向数组中插入元素

strarr.insert("000",atIndex:2);

//运行结果:[理想, swift, 000, ios, android, AAA, BBB, CCC]





//(6)使用removeAtIndex 删除某个数组元素  注意 removeAtIndex() 是有返回值的,返回的就是删除的元素

strarr.removeAtIndex(2);

//运行结果:[理想, swift, ios, android, AAA, BBB, CCC]





//(7)删除数组的最后一个元素

strarr.removeLast();

//运行结果:[理想, swift, ios, android, AAA, BBB]





//(8)使用enumerate函数来遍历数租 返回值是一个元组

for bgen in enumerate(strarr)

{

    println("元素下标:\(bgen.0)  元素值:\(bgen.1)");

}

//运行结果:

/*

元素下标:0  元素值:理想

元素下标:1  元素值:swift

元素下标:2  元素值:ios

元素下标:3  元素值:android

元素下标:4  元素值:AAA

元素下标:5  元素值:BBB

*/







//(9)使用构造语法来创建数组

//创建一个Int数据类型构成的空数组:

var nums=Int[]();

//创建一个自定义数据类型构成的空数组:

class Student  // 创建一个类 ,后面会具体说,这里就是为了得到这个类的类型

{

    //数据成员和成员函数略

    

}

var students = Student[]();  // students 是一个Student 类型的数组





//(10)创建特定大小并且所有数据都被默认值得数组

var  nums2 = Int[](count: 5, repeatedValue:3);  // 个元素  元素的值都是 3

println(nums2);

//运行结果:[3, 3, 3, 3, 3]






//(10)数组的赋值和拷贝行为

/*

特点:数组的拷贝行为只有在必要时才会发生


将一个数组(Array)实例赋给一个变量或常量,或者将其作为参数传递给函数或方法调用,在事件发生时数组的内容不会被拷贝。当你在一个数组内修改某一元素,修改结果也会在另一数组显示。


数组的拷贝行为仅仅当操作有可能修改数组长度时才会发生


解决数组拷贝问题确保数组的唯一性


*/


var testarr1:Int[]=[1,2,3,4,5];

var testarr2=testarr1;

println(" testarr1:\(testarr1)\n testarr2:\(testarr2)");

//执行结果

/*

testarr1:[1, 2, 3, 4, 5]

testarr2:[1, 2, 3, 4, 5]

*/


testarr1[1]=1000;//改变testarr1 中第二个(下标为1)的元素的值为 1000 ,**注意:根据数组的拷贝机制 testarr2也会该改变

println(" testarr1:\(testarr1)\n testarr2:\(testarr2)");

//执行结果

/*

testarr1:[1, 1000, 3, 4, 5]

testarr2:[1, 1000, 3, 4, 5]

*/


testarr2.removeLast();//删除数组的最后一个元素,改变数组长度,数组发生拷贝行为

println(" testarr1:\(testarr1)\n testarr2:\(testarr2)");

testarr1[1]=2;//改变testarr1 中第二个(下标为1)的元素的值为 1000 ,**注意:根据数组的拷贝机制testarr2中的元素不在会改变,以为在在数组长度改变时,已经发生了数组的拷贝行为

println(" testarr1:\(testarr1)\n testarr2:\(testarr2)");

//执行结果:

/*

testarr1:[1, 2, 3, 4, 5]

testarr2:[1, 1000, 3, 4]

*/




//解决数组拷贝问题确保数组的唯一性

/*

在操作一个数组,或将其传递给函数以及方法调用之前是很有必要先确定这个数组是有一个唯一拷贝的。通过在数组变量上调用unshare方法来确定数组引用的唯一性。(当数组赋给常量时,不能调用unshare方法)

如果一个数组被多个变量引用,在其中的一个变量上调用unshare方法,则会拷贝此数组,此时这个变量将会有属于它自己的独立数组拷贝。当数组仅被一个变量引用时,则不会有拷贝发生



*/


var testarr4:Int[]=[1,2,3,4,5];

var testarr5=testarr4;

var testarr6=testarr5;

testarr5.unshare(); //调用 unshare方法,则会拷贝此数组,此时 testarr5 将会有属于它自己的独立数组拷贝

testarr5[2]=0;

println("testarr4: \(testarr4)\n testarr5:\(testarr5) \n testarr6:\(testarr6)");

//执行结果:

/*

testarr4: [1, 2, 3, 4, 5]

testarr5:[1, 2, 0, 4, 5]

testarr6:[1, 2, 3, 4, 5]

*/



//强制复制数组

/*我们通过调用数组的copy方法进行强制显性复制。这个方法对数组进行了浅拷贝(shallow copy),并且返回一个包含此拷贝的新数组。

*/



var names = ["Mohsen""Hilary""Justyn""Amy""Rich""Graham""Vic"]

var copiedNames = names.copy();

copiedNames[0] = "Mo"

println(names[0]);

// 执行结果: Mohsen



//说明:如果你仅需要确保你对数组的引用是唯一引用,请调用unshare方法,而不是copy方法。unshare方法仅会在确有必要时才会创建数组拷贝。copy方法会在任何时候都创建一个新的拷贝,即使引用已经是唯一引用。


本文转载自:

共有 人打赏支持
法斗斗
粉丝 20
博文 336
码字总数 6335
作品 0
杨浦
程序员
07-Swift中的数组

数组 1 数组的介绍 2 数组的初始化 数组的初始化 在声明一个Array类型的时候可以使用下列的语句之一 声明的数组需要进行初始化才能使用,数组类型往往是在声明的同时进行初始化的 3 对数组的...

不孤独的美食家 ⋅ 2016/08/06 ⋅ 0

swift语法学习

变量和常量 变量,可以修改的 常量,一经定义不能修改 在swift开发中,通常先定义常量,只有必须修改的时候,再改成 注意点: swift是一个对变量类型要求及其严格的语言 任何数据类型之间,都...

冷漠叻荭颜 ⋅ 2015/05/10 ⋅ 1

swift学习笔记之二——集合

//===========================//2014/7/21 17:27 swift集合//=========================== swift提供了两种集合类型,arrays和dictionaryies,两种集合都是可变的,可以在集合声明后对其进行...

vill_520 ⋅ 2014/07/21 ⋅ 0

从 JSON 到 Model: 协议默认方法让生活更简单

背景 在 从 API 生成 Model 代码开源脚本中生成的模型代码中, 我们默认生成了 方法.假设就是如下的 Model 我们经常需要得到的是 一个 数组. 完善之路 也许我们会写如下的方法: 上面的代码,对...

李海珍 ⋅ 2016/12/25 ⋅ 0

Swift4.0基础知识回顾

简单介绍一下Swift Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序,Swift语言让应用开发更简单、更快、更稳定,确保最终应用有着更好的质量更多了解Swift可以去《The...

博行天下 ⋅ 2017/12/06 ⋅ 0

Swift 个人学习笔记 - 05: 集合类型(Array, Set, Dictionary)

本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的...

amc ⋅ 2017/02/22 ⋅ 0

Swift 4.0 基础学习总结(一)

Swift简介 作者:Chris Lattner Swift 2010年7月开始设计,1年时间完成基本架构,经历4年开发期于WWDC 2014 苹果2014年开发者大会发布,用于撰写OS X和iOS应用程序。 特点: 语法简单,代码简...

xx_cc ⋅ 2017/11/20 ⋅ 0

Swift的基本使用介绍

如果你会Object-C,也会Swift,那么这个你必看 Swift和OC文件间的相互调用 计时器调用的方法不能用private修饰 Swift除了闭包不需要用self. Swift中的方法 Swift中定义全局属性 Swift中敲击手势...

阴雨音语 ⋅ 2016/03/28 ⋅ 0

自定义选项卡实战swift(内附源码且精讲知识点)

App开发本质上是一种对人性的把握,我们在项目开发过程中经常需要自定义很多精美的控件,以此来获得更好的用户体验。 因此,掌握自定义控件是移动应用开发必备的一项技能。本篇文章我们就来快...

充电实践 ⋅ 05/26 ⋅ 0

Javascriptish Swift Arrays

swift-javascriptish-arrays 是扩展 Swift 数组,使得数组类似 JavaScript。 push 添加多个元素到一个数组: var fruits = ["Banana", "Orange"]fruits.push("Apple")fruits.push("Kiwi", "......

叶秀兰 ⋅ 2014/07/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

存储,对比私有云和公有云的不同

导读 说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此,它还是具备着简单和固有的可用性。公共存储的名字听起来也缺乏专有性,很像是把东西直接堆放在那里而不会得到...

问题终结者 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部