最基础的 swift 语言

  1 import Foundation
  2 
  3  
  4 
  5 //打印函数
  6 
  7 print("Hello, World!")
  8 
  9  
 10 
 11 //不用加分号, 字符串就是"", 不用加@
 12 
 13 print("41班, 先有创神后有天")
 14 
 15  
 16 
 17 //类型推断: swift会根据初始值类型, 推断常量, 变量的数据类型
 18 
 19 //常量和变量
 20 
 21  
 22 
 23 //常量
 24 
 25 //常量的定义前面都要加 let
 26 
 27 let a = 10
 28 
 29  
 30 
 31 //变量
 32 
 33 //变量的定义前面都要加 var
 34 
 35 var b = 20
 36 
 37 b = 30
 38 
 39  
 40 
 41 //类型声明
 42 
 43 //类型安全: 实际类型 和 声明类型必须一致.
 44 
 45 var c : Int = 30
 46 
 47  
 48 
 49 //swift 命名比较随意
 50 
 51 //不要以阿拉伯数字靠头
 52 
 53 var 闯神 = 100.0
 54 
 55 print(闯神)
 56 
 57  
 58 
 59 let 😄 = 10
 60 
 61 print(😄)
 62 
 63 let 呵呵 = "😄"
 64 
 65 print(呵呵)
 66 
 67  
 68 
 69 //字符串
 70 
 71 var str: NSString = "不要连我的投影"
 72 
 73 print(str.stringByAppendingString("123"))
 74 
 75  
 76 
 77 //数组
 78 
 79 var array = ["123"]
 80 
 81 print(array)
 82 
 83 print(array[0])
 84 
 85 //往可变数组内添加元素
 86 
 87 array.append("1")
 88 
 89 //删除数组中的元素
 90 
 91  array.removeAtIndex(0)
 92 
 93  print(array,"\n",str)
 94 
 95  //修改数组内元素
 96 
 97  array[0] = "swift 保平安";
 98 
 99  print(array)
100 
101  
102 
103  //字典
104 
105  var dictionary = ["name":"龙神", "age":18]
106 
107  //修改元素
108 
109  dictionary.updateValue("81", forKey: "age")
110 
111  print(dictionary)
112 
113  //增加元素
114 
115  //updateValue方法: 如果key存在就进行更新value, 如果key不存在, 就添加元素
116 
117  dictionary.updateValue(168, forKey: "height")
118 
119  print(dictionary)
120 
121 //删除元素
122 
123  dictionary.removeValueForKey("height");
124 
125  print(dictionary)
126 
127  //获取value
128 
129  //可选类型: 如果有值, 就是值本身, 如果没有值的话, 就是nil
130 
131  let value = dictionary["nam"]
132 
133  //如果确定有值, 可以进行强制解析,强制解析的方法为 !.
134 
135 // print(value!)
136 
137  //如果不确定有值, 就要使用隐式解析, 解析方式如下:
138 
139  if let v = value {
140 
141     print(v)
142 
143  } else {
144 
145     print("没有取到值")
146 
147  }
148 
149  
150 
151 //自定义一个可选类型的变量
152 
153  var 可选类型的变量 : Int?
154 
155  可选类型的变量 = 123
156 
157  print(可选类型的变量)
158 
159  
160 
161  //+ - * / % 三目运算
162 
163  let aa = 10
164 
165  let bb = 20
166 
167  let cc = aa - bb
168 
169  print(cc)
170 
171  let dd = aa * bb
172 
173  print(dd)
174 
175  print(aa/bb)
176 
177  //swift可以对浮点型取余
178 
179  //C语言是不可以的
180 
181  print(10 % 3.5)
182 
183  //+除了运算, 可以实现字符串拼接
184 
185  let 班 = "41 - "
186 
187  let name = "闯神"
188 
189  print(班 + name)
190 
191  
192 
193  //三目运算
194 
195  let sum = 100
196 
197  sum >= 10 ? print("sum比较大"):print("10比较大")
198 
199  
200 
201  //分支结构
202 
203  //if...else
204 
205  if(sum > 10){
206 
207     print("sum > 10")
208 
209  } else {
210 
211     print("sum <= 10")
212 
213  }
214 
215  
216 
217  //for循环
218 
219  for var i = 0; i < 10; i++ {
220 
221     //字符串拼接
222 
223     print("i = \(i)")
224 
225  }
226 
227  
228 
229  //区间[0, 20]
230 
231  //闭区间
232 
233  for j in 0...8 {
234 
235     print("j = \(j)")
236 
237  }
238 
239  
240 
241  //区间[8, 20)
242 
243  for k in 8..<20 {
244 
245     print("k = \(k)")
246 
247  }
248 
249  
250 
251 //while
252 
253  var num = 10
254 
255  while num > 0 {
256 
257     print("num = \(num)")
258 
259     num--
260 
261  }
262 
263  
264 
265  //repeat...while = do...while
266 
267  //不管条件是否满足, 都要先走一次
268 
269  var n = 150
270 
271  repeat {
272 
273     print("闯神身高 = \(n) cm")
274 
275     n++
276 
277  } while(n < 170)
278 
279  
280 
281  //switch...case
282 
283  //每个条件语句结束部分不需要添加break, 会自动中止匹配
284 
285  let hobby = "扫雷"
286 
287  switch hobby {
288 
289     case "LOL":
290 
291     print("龙神爱玩LOL")
292 
293     case "World Of Warcraft":
294 
295     print("龙神爱玩魔兽世界")
296 
297  default :
298 
299     print("龙神爱玩其他游戏")
300 
301  }
302 
303  
304 
305  //定义一个新的常量/变量, 在 case 内把匹配数据接收, 恒成立, 所以下面代码不会执行
306 
307  let interest = "烫头"
308 
309  switch interest {
310 
311  case let x:
312 
313     print("闯神爱\(x)")
314 
315     case "唱歌":
316 
317     print("闯神爱唱歌")
318 
319  default:
320 
321     print("闯神爱睡觉")
322 
323  }
324 
325  
326 
327  //switch条件匹配
328 
329  //在where后面添加条件
330 
331  //如果满足, 才能走这个语句
332 
333  let x = 160
334 
335  switch x {
336 
337  case let y where y > 150:
338 
339     print("闯神身高大于150, 实际身高\(y)cm")
340 
341  default:
342 
343     print("闯神不足150cm!")
344 
345  }
346 
347  
348 
349  //穿过
350 
351  let xx = "女朋友"
352 
353  switch xx{
354 
355     case "女朋友":
356 
357     print("蒋飞有\(xx)")
358 
359     fallthrough
360 
361     case "宗主":
362 
363     print("蒋飞有宗主")
364 
365     fallthrough
366 
367  default:
368 
369     print("蒋飞有手")
370 
371  }
372 
373  
374 
375  //元祖
376 
377  let tuples = ("404", "网站无法打开")
378 
379  print(tuples.1)
380 
381  let personTuples = (万少:4121980, 大妈:41272609, 李阳:4101950)
382 
383  print(personTuples.大妈)
384 
385  
386 
387  //函数
388 
389  //定义一个函数
390 
391  //无参无返回
392 
393  func helloworld(){
394 
395     print("hello world")
396 
397  }
398 
399  helloworld()
400 
401  //有参无返回
402 
403  func helloKitty(name:String){
404 
405     print("广恩结婚对象的名字是: \(name)")
406 
407  }
408 
409  helloKitty("我不知道")
410 
411  
412 
413  //无参有返回
414 
415  func helloXuehua()->String {
416 
417     return "你买单, 我就来"
418 
419  }
420 
421  
422 
423  let xuehua = helloXuehua()
424 
425  print("雪华说:"+xuehua)
426 
427  
428 
429  //有参有返回
430 
431  func lotteryLanou(name:String)->String{
432 
433     if(name == ""){
434 
435         return "U 盘"
436 
437     }else if(name == "范玉珍"){
438 
439         return "iWatch"
440 
441     }else{
442 
443         return "iPad"
444 
445     }
446 
447  }
448 
449  print(lotteryLanou("其他"))
450 
451  
452 
453 //外部参数(脾气)
454 
455  func jinhua(脾气 piqi:String){
456 
457     print("金华脾气\(piqi)")
458 
459  }
460 
461 jinhua(脾气:"好!")
462 
463  
464 
465  func sum(a:Int, b:Int)->Int{
466 
467     return a+b
468 
469  }
470 
471  print(sum(10,b: 20))
472 
473  
474 
475  //参数默认值
476 
477  func multiply(a:Int, b:Int = 10){
478 
479     print("积为\(a*b)")
480 
481  }
482 
483  multiply(200)
484 
485  //布尔值在 swift内只有两个值
486 
487  //真为 true
488 
489  //假为 false
490 
491  func autobiography(name:String, age:Int, gender:Bool){
492 
493     let 性别 = (gender == true ? "":"")
494 
495     print("我叫\(name),\(性别),\(age)岁")
496 
497  }
498 
499  autobiography("李松",age:18,gender:true)
500 
501  //函数类型
502 
503  // (Int)->Int
504 
505  func getName(a:Int)->Int{
506 
507     return 10;
508 
509  }
510 
511  
512 
513  func getAge(a:Int)->Int{
514 
515     return 100;
516 
517  }
518 
519  
520 
521  //初始化一个类型为 (Int)->Int 类型的函数变量
522 
523  //写法1
524 
525  //var fu:(Int)->Int = getAge
526 
527  //print(fu(123))
528 
529  
530 
531  //类型别名
532 
533  //函数类型包括两部分, (参数类型,....)->返回值类型, 也就是说具有相同参数和返回值的函数是同一个类型的
534 
535  //写法2
536 
537  typealias 整型 = Int
538 
539  typealias 函数类型1 = (整型)->整型
540 
541  var fu:函数类型1 = getAge
542 
543  print(fu(123))
544 
545  
546 
547  //函数作为函数的参数
548 
549  func firstDem(a:Int){
550 
551     
552 
553  }
554 
555  print(firstDem(10))
556 
557  
558 
559  func firstFunc(nielei:函数类型1){
560 
561     
562 
563     print("firstFunc = \(nielei(123))")
564 
565  }
566 
567 firstFunc(getName)
568 
569  
570 
571  
572 
573  //函数作为函数的参数
574 
575  func second(a : Int)->Int{
576 
577     return a * 100
578 
579  }
580 
581  
582 
583  func second2(a:Int)->Int{
584 
585     return a * 3
586 
587  }
588 
589  
590 
591  func secondFun(f1 : (Int)->Int)->Int {
592 
593     return f1(20)
594 
595  }
596 
597  print(secondFun(second2))
598 
599  
600 
601  //函数作为函数的返回值
602 
603  func third1(){
604 
605     print("闯神不帅")
606 
607  }
608 
609  func third2(){
610 
611     print("我真帅")
612 
613  }
614 
615  
616 
617  //重定义()->()类型
618 
619  typealias functionType2 = ()->()
620 
621  func thirdFunc(f1:functionType2, f2:functionType2, b:Bool)->functionType2{
622 
623     return b == true ? f1 : f2
624 
625  }
626 
627  //resultFunction 是个函数
628 
629  let resultFunction = thirdFunc(third1, f2: third2, b: false)
630 
631  //调用函数
632 
633  resultFunction()
634 
635  
636 
637  //函数嵌套定义
638 
639  typealias functionType3 = (Int)->()
640 
641  func bigFunc(b:Bool)->(Int)->(){
642 
643     func smallFunc1(a:Int)->(){
644 
645         print("大妈今年\(a)岁")
646 
647     }
648 
649     func smallFunc2(a:Int)->(){
650 
651         print("大妈明年\(a + 1)岁")
652 
653     }
654 
655     return b == true ? smallFunc1 : smallFunc2
656 
657  }
658 
659  let resultFunc2 = bigFunc(true)
660 
661  resultFunc2(17)
662 
663  

 

posted @ 2015-12-18 20:26  NingSpeals  阅读(162)  评论(0编辑  收藏  举报