swift Array 数组
//
//? main.Swift
//? swift數(shù)組
//
//? Created by zhangbiao on 14-6-15.
//? Copyright (c) 2014年 理想. All rights reserved.
//
import Foundation
println("數(shù)組")
/*
Swift 語言中的數(shù)組用來按順序存儲相同類型的數(shù)據(jù)
*/
//1.定義數(shù)組
var numarr:Int[] = [1,3,5,7,9];
var strarr:String[] = ["理想","swift"];
//2.訪問和修改數(shù)租
//(1)數(shù)組長度? 和 訪問數(shù)組中的某個元素
println("strarr 數(shù)租的長度為:\(strarr.count) 數(shù)組的 第1個值為:\(strarr[0])");
//(2)向數(shù)組中追加元素
strarr.append("iOS");
//運行結(jié)果:[理想, swift, ios]
//(3)使用加法賦值運算符(+=)也可以直接在數(shù)組后面添加元素
strarr+="Android";
//運行結(jié)果:[理想, swift, ios, android]
//(4)直接向數(shù)組最后添加一個數(shù)組
strarr+=["AAA","BBB","CCC"];
//運行結(jié)果:[理想, swift, ios, android, AAA, BBB, CCC]
//(5)使用Index 向數(shù)組中插入元素
strarr.insert("000",atIndex:2);
//運行結(jié)果:[理想, swift, 000, ios, android, AAA, BBB, CCC]
//(6)使用removeAtIndex 刪除某個數(shù)組元素? 注意 removeAtIndex() 是有返回值的,返回的就是刪除的元素
strarr.removeAtIndex(2);
//運行結(jié)果:[理想, swift, ios, android, AAA, BBB, CCC]
//(7)刪除數(shù)組的最后一個元素
strarr.removeLast();
//運行結(jié)果:[理想, swift, ios, android, AAA, BBB]
//(8)使用enumerate函數(shù)來遍歷數(shù)租 返回值是一個元組
for bgen in enumerate(strarr)
{
? ? println("元素下標:\(bgen.0)? 元素值:\(bgen.1)");
}
//運行結(jié)果:
/*
元素下標:0? 元素值:理想
元素下標:1? 元素值:swift
元素下標:2? 元素值:ios
元素下標:3? 元素值:android
元素下標:4? 元素值:AAA
元素下標:5? 元素值:BBB
*/
//(9)使用構(gòu)造語法來創(chuàng)建數(shù)組
//創(chuàng)建一個Int數(shù)據(jù)類型構(gòu)成的空數(shù)組:
var nums=Int[]();
//創(chuàng)建一個自定義數(shù)據(jù)類型構(gòu)成的空數(shù)組:
class Student? // 創(chuàng)建一個類 ,后面會具體說,這里就是為了得到這個類的類型
{
? ? //數(shù)據(jù)成員和成員函數(shù)略
?? ?
}
var students = Student[]();? // students 是一個Student 類型的數(shù)組
//(10)創(chuàng)建特定大小并且所有數(shù)據(jù)都被默認值得數(shù)組
var? nums2 = Int[](count: 5, repeatedValue:3);? // 有5 個元素? 元素的值都是 3
println(nums2);
//運行結(jié)果:[3, 3, 3, 3, 3]
//(10)數(shù)組的賦值和拷貝行為
/*
特點:數(shù)組的拷貝行為只有在必要時才會發(fā)生
將一個數(shù)組(Array)實例賦給一個變量或常量,或者將其作為參數(shù)傳遞給函數(shù)或方法調(diào)用,在事件發(fā)生時數(shù)組的內(nèi)容不會被拷貝。當你在一個數(shù)組內(nèi)修改某一元素,修改結(jié)果也會在另一數(shù)組顯示。
數(shù)組的拷貝行為僅僅當操作有可能修改數(shù)組長度時才會發(fā)生
解決數(shù)組拷貝問題: 確保數(shù)組的唯一性
*/
var testarr1:Int[]=[1,2,3,4,5];
var testarr2=testarr1;
println(" testarr1:\(testarr1)\n testarr2:\(testarr2)");
//執(zhí)行結(jié)果
/*
testarr1:[1, 2, 3, 4, 5]
testarr2:[1, 2, 3, 4, 5]
*/
testarr1[1]=1000;//改變testarr1 中第二個(下標為1)的元素的值為 1000 ,**注意:根據(jù)數(shù)組的拷貝機制 testarr2也會該改變
println(" testarr1:\(testarr1)\n testarr2:\(testarr2)");
//執(zhí)行結(jié)果
/*
testarr1:[1, 1000, 3, 4, 5]
testarr2:[1, 1000, 3, 4, 5]
*/
testarr2.removeLast();//刪除數(shù)組的最后一個元素,改變數(shù)組長度,數(shù)組發(fā)生拷貝行為
println(" testarr1:\(testarr1)\n testarr2:\(testarr2)");
testarr1[1]=2;//改變testarr1 中第二個(下標為1)的元素的值為 1000 ,**注意:根據(jù)數(shù)組的拷貝機制 testarr2中的元素不在會改變,以為在在數(shù)組長度改變時,已經(jīng)發(fā)生了數(shù)組的拷貝行為
println(" testarr1:\(testarr1)\n testarr2:\(testarr2)");
//執(zhí)行結(jié)果:
/*
testarr1:[1, 2, 3, 4, 5]
testarr2:[1, 1000, 3, 4]
*/
//解決數(shù)組拷貝問題: 確保數(shù)組的唯一性
/*
在操作一個數(shù)組,或?qū)⑵鋫鬟f給函數(shù)以及方法調(diào)用之前是很有必要先確定這個數(shù)組是有一個唯一拷貝的。通過在數(shù)組變量上調(diào)用unshare方法來確定數(shù)組引用的唯一性。(當數(shù)組賦給常量時,不能調(diào)用unshare方法)
如果一個數(shù)組被多個變量引用,在其中的一個變量上調(diào)用unshare方法,則會拷貝此數(shù)組,此時這個變量將會有屬于它自己的獨立數(shù)組拷貝。當數(shù)組僅被一個變量引用時,則不會有拷貝發(fā)生
*/
var testarr4:Int[]=[1,2,3,4,5];
var testarr5=testarr4;
var testarr6=testarr5;
testarr5.unshare(); //調(diào)用 unshare方法,則會拷貝此數(shù)組,此時 testarr5 將會有屬于它自己的獨立數(shù)組拷貝
testarr5[2]=0;
println("testarr4: \(testarr4)\n testarr5:\(testarr5) \n testarr6:\(testarr6)");
//執(zhí)行結(jié)果:
/*
testarr4: [1, 2, 3, 4, 5]
testarr5:[1, 2, 0, 4, 5]
testarr6:[1, 2, 3, 4, 5]
*/
//強制復(fù)制數(shù)組
/*我們通過調(diào)用數(shù)組的copy方法進行強制顯性復(fù)制。這個方法對數(shù)組進行了淺拷貝(shallow copy),并且返回一個包含此拷貝的新數(shù)組。
*/
var names = ["Mohsen", "Hilary", "Justyn", "Amy", "Rich", "Graham", "Vic"]
var copiedNames = names.copy();
copiedNames[0] = "Mo"
println(names[0]);
// 執(zhí)行結(jié)果: Mohsen
//說明:如果你僅需要確保你對數(shù)組的引用是唯一引用,請調(diào)用unshare方法,而不是copy方法。unshare方法僅會在確有必要時才會創(chuàng)建數(shù)組拷貝。copy方法會在任何時候都創(chuàng)建一個新的拷貝,即使引用已經(jīng)是唯一引用。
轉(zhuǎn)載于:https://www.cnblogs.com/Free-Thinker/p/5602575.html
總結(jié)
以上是生活随笔為你收集整理的swift Array 数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。