Lesson_Swift

  1 // Playground - noun: a place where people can play
  2 
  3 import UIKit
  4 
  5 var str = "Hello, World!"
  6 
  7 //1 定义变量常量/常量
  8 // define const
  9 
 10 //1.1 定义变量 使用var定义
 11 var huangxiangwang = "huangxiangwang"
 12 var huangxiangwang2hao = "huangxiangwang2hao"
 13 
 14 println(huangxiangwang)
 15 
 16 //1.2 定义常量 使用let定义
 17 let qm = "qiaoming"
 18 //qm = "da" //错误
 19 
 20 //1.3 变量常量的命名规范:几乎支持所有的Unicode编码字符,除了一些数字符号,箭头,横线,以及系统的关键字
 21 var 😄 = "😄"
 22 println(😄)
 23 
 24 var 哈哈 = "哈哈"
 25 println(哈哈)
 26 
 27 //错误示范
 28 //var var = "afs"
 29 //var -aa = "aad"
 30 
 31 
 32 
 33 //2.基本类型
 34 //2.1
 35 //C/C++语言类型: 整型(int), 单精度浮点型(float), 双精度浮点型(double), 布尔型(bool), 字符型(char)
 36 //在Swift语言中,基本类型几乎已经被重写了.首字母大写
 37 //Swift基本变量类型: Int Float Double Bool String
 38 
 39 //2.2
 40 var zs = 213
 41 zs
 42 let whq = "234"
 43 whq
 44 //[注]在Swift语言中,声明变量常量如果没有类型而是直接赋值的话,编译器会自动推断出常量变量的类型
 45 
 46 //2.3 命名常量/变量
 47 //变量/常量 : 类型 = 值
 48 var lmt : String = "刘敏涛"
 49 //var lgz : Int = "213" //错误
 50 
 51 //2.4 练习
 52 var zwd : Int = 23333
 53 //在swift中,整型是Int,系统默认64位,如果系统为32位,则默认32位
 54 
 55 
 56 var wzb : Int8 = -128
 57 //Int8范围: -128 ~ +127
 58 
 59 
 60 
 61 //[Practice]变量/常量
 62 
 63 var abcd = "abcd"
 64 let qwer = "QWER"
 65 let num = 1234
 66 
 67 
 68 var rkf = 3.5
 69 //在Swift中浮点类型默认为double
 70 var rly : Float = 2.6
 71 var cj = 3.6
 72 
 73 let dfr = rly + Float(cj)
 74 //[NOTE]在Swift语言中不支持隐式转化,可以进行显示转化
 75 //转化的方式: 类型(变量/常量)
 76 
 77 
 78 //3.元祖
 79 //元祖 就好比数据库中得表,数据库中得一条记录就系那个当与一个元祖.在这个元组中,里面可以存放不同的数据类型的数据
 80 var ntt : (String, Int, String) = ("牛田田", 22, "")
 81 ntt.0
 82 ntt.1
 83 ntt.2
 84 
 85 //通过下标访问元祖中的元素
 86 
 87 var wxx : (name: String, age: Int, Sex: String) = ("王玺玺", 23, "")
 88 //在定义一个元祖的时候可以给元祖的数据一个名字,之后我们通过这个名字访问元祖中的元素
 89 wxx.name
 90 wxx.age
 91 wxx.Sex
 92 wxx.0
 93 wxx.1
 94 wxx.2
 95 
 96 
 97 //我们可以将元祖的元素分解
 98 let gcz = ("龚朝忠", 25)
 99 var (name, age) = gcz
100 name
101 age
102 
103 //元素分解,遇到不想遇到的参数,可以通过 _ 忽略
104 let shb = ("沈红榜", 23, "")
105 let (name1, _, sex1) = shb
106 name1
107 sex1
108 
109 
110 //4.数组
111 //[NOTE]在OC中,数组存放的元素都是基于NSObject类型的对象,企鹅对象类型可以不相同.而在Swift中,数组必须存放系那个同类型的对象
112 
113 //定义一个数组
114 var lc : Array = [String]()
115 lc
116 let sxr : Array = [String]()
117 
118 //var声明数组为可变数组
119 //let声明数组为不可变数组
120 
121 var gst = ["郭松涛", "张国栋", "邵文乐"]
122 //编译器会对类型就行类型推断,gst首先是一个Array数组,其次,里边的数据是String的,所以推断出是字符串数组
123 
124 //var ww = ["王伟", 24] NSObject
125 
126 //
127 gst.append("豆培")
128 gst.insert("徐军辉", atIndex: 1)
129 
130 //
131 gst.removeLast()
132 gst.removeAtIndex(1)
133 gst
134 
135 //
136 gst[0] = "马锐"
137 
138 //139 //1.根据下标访问
140 gst[1]
141 //2.根据下标范围访问
142 //...表示一个闭区间
143 gst[0...2]
144 //..<表示一个开区间
145 gst[0..<2]
146 
147 //3.遍历
148 for name in gst {
149     name
150 }
151 
152 //4.获取数组中得元素以及位置
153 for (index, name) in enumerate(gst) {
154     index
155     name
156 }
157 
158 //5.字典
159 //[NOTE]在Swift中依旧保留了key-value,但是需要注意的地方:value也必须是同一种类型
160 
161 //声明一个变量
162 var sc = Dictionary<String, Int>()
163 
164 //165 //Swift中,通过下标访问字典中的元素,如果字典中没有相对应的key,那么就是添加数据
166 sc["age"] = 2
167 sc["name"] = 4
168 sc
169 
170 //
171 sc.removeValueForKey("age")
172 sc
173 
174 //175 //通过下标访问字典中的元素,如果字典中有对应的key,那么就修改对应的值
176 sc["name"] = 100
177 sc
178 
179 //180 //1.下标法
181 //2.遍历 for-in
182 for (key, value) in sc {
183     key
184     value
185 }
186 
187 for key in sc.keys {
188     key
189 }
190 
191 sc.keys
192 sc.values
193 
194 var flag = true
195 flag
196 flag = false
197 //flag = 10 错误
198 
199 //String
200 var b_hxw : String = "Xiangwang Huang"
201 b_hxw.uppercaseString  //大写
202 b_hxw.lowercaseString  //小写
203 
204 
205 //***************************************************************
206 //分支结构
207 //1.if-else
208 
209 //错误
210 //if 条件 {
211 //      语句块
212 //}
213 //
214 //[NOTE]条件必须是bool类型
215 
216 var a = 6
217 if  a == 5 {
218     a
219 } else {
220     println("a != 5")
221 }
222 
223 //2. switch-case
224 var b = 2
225 switch b {
226 case 0:
227     b + 0;
228 case 1:
229     b + 1;
230 case 2:
231     b + 2;
232 case 3:
233     b + 3;
234     fallthrough //[note]在swift中,通过使用fallthrough可以强制的执行下一个case
235 case 4:
236     b + 4;
237 default:
238     b + 3;
239 }
240 //[NOTE]写switch一定要加上default
241 //[NOTE]在swift中,switch case加强后,无需在每个case后添加break
242 
243 //[练习]给一个日期,xx年xx月xx日,计算这一天是这个年的第几天
244 
245 //switch中得case可以表示为一个范围,范围可以交叉,执行满足第一个条件后跳出去
246 var c = 300
247 switch c {
248 case 0...300 where c != 300: //使用where进行双重判断
249     println("在0-300之间")
250 case 200...400:
251     println("在300-600之间")
252 case 400...600:
253     println("在600-900之间")
254 default:
255     println("没有这个数")
256 }
257 
258 
259 //元祖也可以作为switch条件
260 var point = (1, 0)
261 switch point {
262 case (0, 0):
263     println("原点")
264 case (_, 0):
265     println("在X轴上")
266 case (0, _):
267     println("在Y轴上")
268 default:
269     println("其他点")
270 }
271 
272 
273 //3.循环结构
274 //3.1for
275 for var i = 0; i < 10; i++  {
276     i
277 }
278 
279 //3.2 for-in
280 for j in 0..<10 {
281     j
282 }
283 
284 //3.3 while
285 var sum = 0
286 //while的条件也需要哦返回值为Bool类型条件 例如:while 1 {}为错误案例
287 while sum < 7 {
288     sum += 1
289 }
290 
291 do {
292     sum++
293 } while sum < 10
294 
295 
296 //======================================================================
297 //______________________________________________________________________
298 //----------------------------------------------------------------------
299 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
300 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
301 ////////////////////////////////////////////////////////////////////////
302 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
303 //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
304 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
305 //######################################################################
306 //**********************************************************************
307 //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
308 //""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
309 //......................................................................
310 //''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
311 
312 var abc = 123_456_789
313 abc
314 
315 
316 //在数组中存放元组
317 var array : Array = [(Int, String)]()
318 for i in 1...10 {
319     var tuple = (i, "\(10 * i)")
320     array.append(tuple)
321 }
322 
323 
324 //在字典中使用元祖作为value
325 var dic = Dictionary<String, (Int, Int, Int)>()
326 dic["tuple"] = (1, 2, 3)
327 
328 
329 //在字典中使用数组作为value
330 var array2 = ["a", "b"]
331 var dic2 = ["key" : array2]
332 
333 var dic3 = ["key1" : "value1", "key2" : "value2"]
334 
335 
336 //元组里放数组
337 //
338 var array3 = [1, 2]
339 var array4 = ["a", "b"]
340 var tuple2 = (array3, array4)
341 
342 var tuple = ([1, 2], ["a", "b"])
343 
344 
345 //Optionals可选类型
346 //在swift中使用可选类型声明变量来处理值可能为nil的情况,如果有值,那就是这个值,如果没有值那就是没有
347 var values : Int?   //?表示值是可选类型的,有可能是nil
348 //Optional
349 let numberStr = "12345"
350 values = numberStr.toInt()
351 //强制解析可选类型
352 values!
353 
354 var value1 = values!
355 //用!隐式解析可选类型去掉nil的情况
356 
357 
358 var values1 : Int!
359 let numberStr1 = "12345a"
360 values1 = numberStr1.toInt()
361 values = numberStr1.toInt()
362 //values!
363 //!表示的表示确实有值,而不是nil
364 
365 //=========================================================
366 //函数
367 
368 //函数定义
369 /*
370 func 函数名 (参数列表) -> (返回值类型) {
371     代码块
372 }
373 */
374 
375 func sayHi (name: String) -> (String) {
376     return "Hi" + name
377 }
378 
379 sayHi("QiaoDaye")
380 
381 //多个参数,参数之间用逗号隔开
382 func sayBye (name: String, toName: String) -> String {
383     return name + ":Bye! " + toName
384 }
385 
386 sayBye("XiangWang", "GuoZhong")
387 
388 //返回值为多个参数, 返回值为元祖类型
389 func sayInfo (name: String, age: Int) -> (String, Int) {
390     return (name, age)
391 }
392 
393 sayInfo("张三", 20)
394 
395 
396 //外部参数名
397 func sayGoodBye (#personName: String, #toPersonName: String) {
398     println("\(personName):\"\(toPersonName), goodbye!\"")
399 }
400 
401 sayGoodBye(personName: "张三", toPersonName: "李四")
402 
403 //默认参数
404 func sum (startNumber: Int = 0, #endNumber: Int) -> Int {
405     var sum: Int = 0
406     for i in startNumber...endNumber {
407         sum += i
408     }
409     return sum
410 }
411 
412 sum(endNumber: 100)
413 
414 
415 
416 
417 //函数类型 参数类型和返回值类型组成
418 //TODO
419 var funcType: (String, String) -> String = sayBye
420 
421 
422 
423 //nil Nil NULL NSNull的区别
424 //nil 指向不存在的对象指针
425 //Nil 指向零的类指针
426 //NULL 0
427 //NSNull 空对象
428 
429 //optional可选类型
430 var value: Int? //?表示值可能为nil 也可能有值
431 let testOptional = "123"
432 value = testOptional.toInt()
433 value
434 
435 if  value != nil {
436     value!  //! 强制解析
437 } else {
438     value
439 }

 

posted @ 2015-02-04 23:33  不会骑扫把的胖女巫  阅读(364)  评论(0编辑  收藏  举报