码迷,mamicode.com
首页 > 编程语言 > 详细

swift基础

时间:2016-05-23 09:00:06      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

  1 // swift中导入类库使用import,不再使用<>和""
  2 import Foundation
  3 
  4 // 输出
  5 print("Hello, World!")
  6 
  7 
  8 // MARK: - 定义常量、变量
  9 // 定义常量(使用完第一次就不能修改它了)
 10 let myGender = ""
 11 
 12 // 定义变量
 13 var carName = "BMW"
 14 carName = "Audi"
 15 print(carName)
 16 
 17 // MARK: - 定义常量变量:变量类型的隐式转换
 18 // 在swift中如果定义一个常量变量不给定相关的类型,它会隐式转换成你给定的初始值类型
 19 let name = "Jack"   // 如果这样定义出来一个常量,它会隐式转换成String类型
 20 let name1 : String = "Rose"   // 如果给定类型,后边赋值的时候需要根据类型进行赋值
 21 let age : Int = 18  // 如果定义常量最好给出初始值,定义变量可以不给初始值
 22 
 23 var age1 : Int?  // 表示age1的类型是可选类型,其值可以为空
 24 print(age1)
 25 
 26 // 定义一个字符类型的变量
 27 var ch : Character = "A"   // 赋值字符类型的时候仅需一个字母即可
 28 
 29 // 定义一个BOOL类型的变量(在swift中BOOL类型的变量只有true和false)
 30 var flag : Bool = true
 31 
 32 
 33 // MARK: - 字符串String
 34 // 1.创建一个空的字符串
 35 var str_empty = ""
 36 var str1_empty = String()
 37 
 38 // 2.判断一个字符串是否为空
 39 if str_empty.isEmpty {
 40     print("str_empty为空字符串")
 41 }
 42 
 43 // 3.字符串的拼接
 44 var str1 = "http://"
 45 var str2 = "www.baidu.com"
 46 let str_New = str1 + str2
 47 print(str_New)
 48 print("百度网址:\(str_New)")   // \(变量名)输出相关的内容【插入式取值】
 49 
 50 // 4.获取字符串长度
 51 var str3 : String = "abcdef"
 52 print(str3.characters.count)
 53 print("此字符串的长度:\(str3.characters.count)")
 54 
 55 // 5.字符串的比较
 56 var str4 = "wangcai"
 57 var str5 = "xiaoqiang"
 58 
 59 if str4 == str5 {
 60     print("两个字符串相等")
 61 }
 62 
 63 if str4 != str5 {
 64     print("两个字符串不相等")
 65 }
 66 
 67 // 截取字符串
 68 var str6 = (str5 as NSString).substringWithRange(NSMakeRange(2, 4))
 69 
 70 
 71 // MARK: - 数组
 72 // swift中数组中的元素类型必须相同
 73 // 定义一个数组
 74 var nameArray = ["yuanyuan", "fangfang", "yaoyao"]
 75 print(nameArray)
 76 
 77 var nameArray1 : Array<String> = ["weizhuang", "genie", "tianming"]
 78 print(nameArray1)
 79 
 80 // 定义一个空数组(字符串)
 81 let array = Array<String>()
 82 print(array)
 83 
 84 // 访问数组中的元素
 85 print(nameArray1[1])
 86 
 87 // 向数组中添加元素
 88 var int_array = Array<Int>()
 89 int_array.append(18)
 90 int_array.append(20)
 91 print(int_array)
 92 
 93 // 使用运算符添加数组元素
 94 int_array += [30]
 95 int_array += [25]
 96 print(int_array)
 97 
 98 // 使用运算符添加多个元素
 99 int_array += [40, 50, 60]
100 print(int_array)
101 
102 // 插入元素到具体的位置
103 int_array.insert(99, atIndex: 1)
104 print(int_array)
105 
106 // 移除某个元素
107 int_array.removeAtIndex(3)
108 print(int_array)
109 
110 // 移除所有元素
111 int_array.removeAll()
112 print(int_array)
113 
114 // 移除某个范围内的元素
115 int_array.removeRange(2...5)
116 print(int_array)
117 
118 // MARK: - 字典
119 // 定义一个字典类型的变量
120 var dic : Dictionary<String, Int> = ["a" : 18, "b" : 20]
121 print(dic)
122 
123 // 定义空字典
124 var dic1 : Dictionary<String, Int> = [:]
125 var dic2 = Dictionary<String, Int>()
126 print(dic1,dic2)
127 
128 // 向字典中插入一个键值对
129 dic ["c"] = 23
130 print(dic)
131 
132 // 修改字典中的内容(根据键去修改)
133 dic["a"] = 15
134 print(dic)
135 
136 // 输出字典中的某个键对应的值
137 print(dic["c"])
138 
139 // 删除字典中内容(根据键去删除)
140 dic.removeValueForKey("b")
141 print(dic)
142 
143 
144 // MARK: - 元组
145 // 定义一个元组
146 // 方法一:直接初始化一个元组(使用swift隐式转换的特点)
147 let tuples = ("研14", ["iOS", "html5", "Android"])
148 print(tuples)
149 
150 // 方法二:显示初始化的方式
151 let tuplesNew : (String, Array) = ("研15", ["盖聂", "卫庄", "天明"])
152 print(tuplesNew)
153 
154 // 取出元组中的值
155 // 第一种取值方式:直接把元组赋值给另一个常量,根据相关标记进行取值
156 let tuplesNew1 : (classroom : String, name : Array) = tuplesNew;
157 var classInfo1 = tuplesNew1.classroom + tuplesNew1.name[0] + tuplesNew1.name[1] + tuplesNew1.name[2];
158 print(classInfo1)
159 
160 // 第二种取值方式:直接根据下标进行取值
161 var classInfo2 = tuplesNew.0 + tuplesNew.1[0] + tuplesNew.1[1] + tuplesNew.1[2]
162 print(classInfo2)
163 
164 
165 // MARK: - 循环
166 // 第一种形式:
167 for var i = 1; i < 10; i++ {
168     print(i)
169 }
170 
171 // 第二种形式
172 for number in 1..<10 {
173     print(number)
174 }
175 
176 // 第三种形式
177 for number in 1...10 {
178     print(number)
179 }
180 
181 // while循环和repeat...while
182 var i = 8
183 while i > 0 {
184     i--
185     print(i)
186 }
187 
188 repeat { // 先执行一次循环体,再进行相关的循环
189     print("我爱你们")
190 }while 1 < 0
191 
192 // 使用循环遍历数组
193 var animalArray = ["dog", "pig", "cat", "tiger"]
194 for animal in animalArray {
195     print(animal)
196 }
197 
198 // 使用循环遍历字典
199 var animalDict = ["dog" : "??", "pig" : "??", "monkey" : "??"]
200 for (key, value) in animalDict {
201     print("key = \(key), value = \(value)")
202 }
203 
204 
205 // MARK: - 分支结构(if结构和switch格式)
206 // if形式
207 let flag1 = true
208 if flag1 == true {
209     print("我是真的")
210 } else {
211     print("我是假的")
212 }
213 
214 // switch形式使用fallthrough实现贯穿每种可能
215 let value = 0
216 switch value {
217 case 0:
218     print("0")
219     fallthrough
220 case 10:
221     print("10")
222     fallthrough
223 default:
224     print("other")
225 }
226 
227 // case后面可以使用一个范围
228 switch value {
229 case 0..<10:
230     print("输出0-10之间的数值")
231 case 10...100:
232     print("输出10-100的数值")
233 default:
234     print("other")
235 }
236 
237 // case后可以使用(let和var修饰的常量或变量)[where 是满足某种条件]
238 switch value {
239 case var i where value >= 0 && value < 6:
240     i = 99
241     print(i)
242 default:
243     print("other")
244 }
245 
246 // case后可以匹配一个元组
247 let point = (10, 10)
248 switch point {
249 case (10, 0):
250     print("11111")
251 case (10, 8):
252     print("22222")
253 case (_, 10):    // _代表可以忽略某个元素
254     print("33333")
255 case (10, 10):
256     print("44444")
257 default:
258     print("other")
259 }
260 
261 
262 // MARK: - 枚举(enum)
263 // 枚举原始类型为int类型的
264 enum Direction : Int {
265     case east = 0
266     case south = 1
267     case west = 2
268     case north = 3
269 }
270 print(Direction.east.rawValue)  // rawValue就是找到相对应枚举的原始值
271 
272 // 枚举原始类型为String类型的
273 enum Season : String {
274     case spring = "春天"
275     case summer = "夏天"
276     case autumn = "秋天"
277     case winnter = "冬天"
278 }
279 print(Season.summer.rawValue, Season.autumn.rawValue)
280 
281 // 根据原始值获取枚举的类型
282 print(Direction(rawValue: 2))
283 
284 
285 // MARK: - 函数
286 // 表示函数的关键字:func
287 // 函数的类型有四种
288 // 1.无参无返
289 func function1() -> Void {
290     print("无参无返")
291 }
292 function1()
293 
294 // 2.有参无返
295 func function2(name str:String) -> Void {
296     print(str)
297 }
298 function2(name: "akai")
299 
300 // 3.无参有返
301 func function3() -> String {
302     return "卫庄"
303 }
304 print(function3())
305 
306 // 4.有参有返
307 func function4(num1:Int, num2:Int) -> Int {
308     return num1 + num2
309 }
310 print(function4(5, num2: 4))
311 
312 
313 // 函数的返回值为元组类型
314 func function5(num1 : Int, num2 : Int) -> (Int, Int, Int) {
315     return (num1 + num2, num1 - num2, num1 * num2)
316 }
317 print(function5(9, num2: 5))
318 
319 // 外部参数和内部参数
320 // first和second是外部参数,是在函数外部使用的,在函数调用的时候会显示出来这两个名称,默认的情况下,第一个外部参数在调用的时候不显示,其余的均显示,而且和你定义的名字一样
321 // one和two是内部参数,在函数内部使用的,
322 func function6 (first one : Int, second two : Int) {
323     print((one, two))
324 }
325 function6(first: 10, second: 2)
326 
327 // 如果都不想显示外部参数:"_"的作用是忽略
328 func function7(one:Int, _ two:Int) {
329     print("忽略外部参数")
330 }
331 function7(3,5)
332 
333 // 函数的嵌套
334 func test1() {
335     func test2() {
336         func test3() {
337             print("哈哈哈哈")
338         }
339         test3()
340     }
341     test2()
342     print("有点意思")
343 }
344 test1()
345 
346 // inout修饰的参数
347 func test(inout name : String) {
348     name = "卫庄"
349     print(name)
350 }
351 var myName = "yuanyuan"
352 print("myName:\(myName)")
353 test(&myName)
354 print(myName)
355 
356 func Test(var name : String) {
357     name = "盖聂"
358     print(name)
359 }
360 var myName1 = "yinhao"
361 print("myName1 = \(myName1)")
362 Test(myName1)
363 print(myName1)

 

swift基础

标签:

原文地址:http://www.cnblogs.com/zhizunbao/p/5518688.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!