最基础的 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