Swift基本语法及与OC比较之二

  1 //MARK:-----------------控制流-----------------
  2 //MARK: 1.for - in 循环 ,不用声明Value类型
  3
  4 //for value in 1...6 {
  5 //print(value)
  6 //
  7 //}
  8
  9
 10 //不需要具体的值,只是为了得到循环次数
 11
 12 //for _ in 1...6 {
 13 //print("123")
 14 //}
 15
 16
 17 //MARK: 2.for循环,和C一样,只是没有 括号
 18
 19 //for var i = 0 ; i < 26 ; i++ {
 20 //print("i = \(i)")
 21 //}
 22
 23 //MARK: 3.while 循环,和C一致
 24
 25 //var whileValue = 0
 26 //while whileValue < 10 {
 27 //    whileValue++
 28 //
 29 //    print("while ++ -- \(whileValue)")
 30 //}
 31
 32
 33 //MARK: 4. do-while 循环
 34
 35 //var number = 0
 36
 37 //repeat {
 38 //print("number -- \(number)")
 39 //number++
 40 //}while false
 41
 42 //repeat {
 43 //    print("number -- \(number)")
 44 //    number++
 45 //}while number < 10
 46
 47 //MARK: 5. if-else 语句,分支语句
 48 //var applePrice = 8.5 // double
 49 //
 50 //if applePrice < 5 {
 51 //
 52 //    print("applePrice -- \(applePrice)")
 53 //}else{
 54 //    print("applePrice -- \(applePrice)")
 55 //}
 56
 57
 58 //MARK: if-else语句 的值绑定 可以保护程序
 59
 60 //var optionValue :Int?
 61 //var optionValue :Int? = 5
 62 //if var tempOptionValue = optionValue {
 63 //    //如果可选类型有值,就走条件成立的语句
 64 //print("value = \(tempOptionValue)")
 65 //}else{
 66 //    //如果没有值,就走条件不成立的语句
 67 //    print("可选类型为nil")
 68 //}
 69
 70
 71
 72 //MARK: 6.witch - case
 73 //(1)Swift中没有自动贯穿,即使把break删掉,也不会贯穿达下个case语句
 74 //(2)有需要贯穿需求的时候,需要加贯穿语句  fallthrough
 75 //(3)如果case中,没有任何语句,就必须加break ,没有语句就不必加break
 76 //(4)如果不写default,case语句必须包含所有情况。否则必须写。
 77 //var switchValue = 11
 78 //switch switchValue {
 79 //case 10:
 80 //    print("10")
 81 ////    break
 82 //case 11:
 83 //    print("11")
 84 ////    break
 85 //
 86 //    fallthrough
 87 //case 12:
 88 //    print("12")
 89 ////    break
 90 //default:
 91 //    print("other")
 92 //
 93 //}
 94
 95 //MARK: switch -case 的值绑定
 96 //当case条件满足时,进入case语句,把值赋给我们设的局部变量(常量)
 97 //var (x,y) = (0,10)
 98 //switch (x,y){
 99 //case (let localX,0):
100 //    print("localX = \(localX)")
101 //case (0,let localY):
102 //    print("localY = \(localY)")
103 //default:
104 //    print("other")
105 //}
106
107 //MARK: switch-case的区间匹配
108
109 //var money : Float = 10.5
110 //switch money {
111 //case 0...10:
112 //    print("穷屌丝")
113 //case 10...100 :
114 //    print("普通人")
115 //default:
116 //    print("高富帅")
117 //}
118
119
120
121 /* 词语辨析
122 fallthrough :贯穿
123 continue :结束本次循环,进入下次循环
124 break:跳出循环
125 */
126
127
128 //MARK: 7.标签语
129 //sign:  主要用于循环嵌套:可以给循环加标签,这样可以给指定循环做一些操作.作用:更易于操作循环
130 //sign:while true {
131 //
132 //    for var i = 0 ; i < 10 ; i++ {
133 ////      指定break是那个控制流
134 //        if i == 5 {
135 //        break sign
136 //        }
137 //    print("i -- \(i)")
138 //    }
139 //}
140
141
142 //MARK: ----------------函数---------------------
143 //MARK: ----函数调用 --
144
145 /*
146 func 函数名(参数列表) ->返回值 {
147 //实现动作部分
148 }
149
150 */
151
152 //func 函数名()->返回值
153 //MARK: 1.无参无返回值 , 没有返回值可以不写 ->154
155 //func printFunc(){
156 //
157 //}
158
159
160 //func printFunc()->Void {
161 //    print("123")
162 //}
163
164 ////diaoyong hanshu
165 //printFunc()
166
167 //MARK: 2.有参无返回值
168 //func printCity(cityName:String){
169 //print("城市--\(cityName)")
170 //}
171 //
172 ////调用函数
173 //printCity("郑州")
174
175
176 //MARK: 3.无参有返回值
177 //func returnString()->String{
178 //return "北京"
179 //}
180 //
181 //let string = returnString()
182 //
183 //print(string)
184 //
185 //print(returnString())
186
187
188 //MARK: 4.有参有返回值 :可以支持多个返回值
189
190 func matchFun(number1:Int,number2:Int)->(Int,Int){
191
192     // number1++
193     return (number1 + number2,number2 * number1)
194 }
195
196 //print(matchFun(2, number2: 3))
197
198
199 /*注意事项:
200 1.函数的形参是let类型(常量),而不是变量(变量);用var修饰形参可改变
201 2.交换两个数
202
203 */
204
205 //1.
206 func changeCity(var loveCityName:String){
207
208     loveCityName = "北京"
209     //    print(loveCityName)
210 }
211
212 changeCity("上海")
213
214 //2.交换两个数
215 //函数中任意改变形参,实参不会变
216 //MARK: 注意:要改变实参,需要传进入地址(&),需要inout关键字---
217 func changeTwoNumber(inout number1 :Int,inout number2 :Int)->(Int,Int){//(1)
218
219     //func changeTwoNumber(var number1 :Int,var number2 :Int)->(Int,Int){//(2)
220
221     let tempNumber = number1;
222     number1 = number2;
223
224     number2 = tempNumber;
225
226
227     return (number1,number2)
228 }
229
230 var a = 1,b = 2
231
232 let (x,y) = changeTwoNumber(&a, number2: &b)//(1)
233 //let (x,y) = changeTwoNumber(a, number2: b)//(2)
234
235 //print((x,y))
236 //print("a- \(a),b - \(b)")
237
238
239
240 //MARK: 给函数添加一个外部形参名,作用:在函数调用时,可以看到
241
242 //func travelCity( cityName1:String,CityName:String, cityName3:String){//(1)
243
244 func travelCity(firstCity cityName1:String,sencondCity CityName:String,thirdCity cityName3:String){//(2)
245
246     //print("我的旅行路线\(cityName1)-->\(CityName)-->\(cityName3)")
247 }
248
249
250 //调用
251
252 //travelCity("北京", CityName:"马尔代夫", cityName3: "巴黎")//(1)
253 travelCity(firstCity: "北京", sencondCity: "马尔代夫", thirdCity: "巴黎")//(2)
254
255 // 简化的外部参数名:( 只需要在第一个参数名前加外部参数)
256 func travelCity1(cityName1 cityName1:String, CityName:String, cityName3:String){//(2)
257
258     //    print("我的旅行路线\(cityName1)-->\(CityName)-->\(cityName3)")
259 }
260
261 //调用
262 //travelCity1(cityName1: <#T##String#>, CityName: <#T##String#>, cityName3: <#T##String#>)
263
264
265 //MARK:-----------------函数类型-----------------
266 //MARK:1.函数类型是由,函数的参数和返回值组成
267
268 func addFunc(number1 number1:Int,number2:Int) -> Int{
269     return number1 + number2
270 }//这个函数的类型就是  (Int,Int) ->Int
271
272
273
274 //MARK:2.定义函数类型的变量:类似typeDef
275 //var tongVar :String = "string"
276
277 var tongVar :(Int,Int)->Int = addFunc
278
279 //print(tongVar(3,4))
280
281
282 //MARK:3.将函数作为参数
283 //把addFunc2作为另一个函数的参数
284 func addFunc2(number1 number1:Int,number2:Int) -> Int{
285     return number1 + number2
286 }
287
288 //参数1- 参数名:match 参数类型:(Int,Int)->Int
289 //参数2- 参数名:number1 参数类型:Int
290 //参数3- 参数名:number2 参数类型:Int
291
292 //func ParaFunc(match match:(Int,Int)->Int,number1:Int,number2:Int){
293 // let resultNumber1 =  match(number1,number2);
294 //    print(resultNumber1)
295 //}//(1)
296
297 func ParaFunc(addFunc2 addFunc2:(Int,Int)->Int,number1:Int,number2:Int){
298
299
300     //    print(addFunc2(number1,number2))
301 }//(2)
302
303 //调用
304
305 //ParaFunc(match: addFunc2, number1: 2, number2: 4)//(1)
306
307 ParaFunc(addFunc2: addFunc2, number1: 2, number2: 4)//(2)
308
309
310 //MARK:4函数作为返回值,返回值是一个函数类型
311
312 func mutiFun2(number1 number1:Int,number2:Int)->Int{
313     return number1 * number2
314 }
315
316 //定义一个函数,返回值类型是(Int,Int)->Int
317 //参数名:add  类型:Bool 返回值类型:(Int,Int)->Int
318 func selectFunc(isSelectAddFun add:Bool)-> ((Int,Int)->Int){
319
320
321     return add ? addFunc2 :mutiFun2;
322 }
323
324 let result = selectFunc(isSelectAddFun: false)//result 就是函数类型,即(Int,Int)->Int
325
326
327 //print(result(1,2))
328 //
329 //print(selectFunc(isSelectAddFun: true)(1,2))
330
331 //MARK:函数的嵌套
332 //func emedFun(judge judge:Bool,number:Int){
333 //    //自增函数
334 //    func addNumber(var number1:Int){
335 //        print(++number1)
336 //    }
337 //    //自减函数
338 //    func jianNumber(var number2:Int){
339 //        print(--number2)
340 //    }
341 //    //    利用bool值去判断,调用自增还是自减
342 //    let funcName = judge ? addNumber :jianNumber
343 //    //    利用参数number去调用自增或者自减
344 //    funcName(number)
345 //}
346
347 //调用
348
349 //emedFun(judge: false, number: 1)//在函数外层调用,对应只能调用函数外层
350
351
352 //MARK: 重点------闭包------
353 //类似OC中的block
354 //定义一个闭包
355 var block = { (str:String)-> Void in
356     //    block块
357     //    print(str)
358
359 }
360
361 //调用闭包
362 block("我爱北京天安门")
363
364
365 //MARK:-----------------枚举-----------------
366 /*
367 //1.枚举名首字母大写,枚举值首字母也大写
368 //2.swift的枚举和C的区别
369 2.1有case关键字
370 2.2枚举值有哈希值
371 */
372
373 /*
374 enum City{
375 case beijing
376 case Paris
377 case NewYork
378 }
379 print(City.NewYork.hashValue)
380
381 //3.原始值和rawValue
382
383 enum PoneType :String{
384 case Apple = "IPhone"
385 case MI = "Mi4"
386 //    case HUAWEI = "荣耀"
387 case HUAWEI
388 }
389
390 print(PoneType.HUAWEI.rawValue)//如果有rawValue就会打印,否则打印case后枚举值
391
392
393 //通过rawValue找到对应的枚举值
394 var ii = PoneType(rawValue: "荣耀")
395
396 /*
397 //print(ii!.rawValue)//强制解析
398 print(ii?.rawValue)//可选解析
399 print(ii)//默认为可选解析
400 */
401
402
403 */
404
405
406 //MARK:相关值
407 //利用枚举的相关值结合switch-case进行值的绑定
408
409 enum Girl{
410     case Id(Int)
411     case Info(String,Int,Double)//姓名,年龄,身高
412 }
413
414 //进行值的绑定
415 /*
416 var girl = Girl.Info("貂蝉", 21, 165)
417
418 switch girl {
419 case Girl.Info(var girlName,var age,var height) :
420 print("name --\(girlName)")
421 case Girl.Id(var girlID):
422 print("ID -- \(girlID)")
423 }
424 */
425 //MARK:-----------------类-----------------
426
427 /*和OC区别:
428
429 1.运用class关键字
430 2.没有.h .m
431 3.在同一个括号内声明属性,书写方法
432
433 */
434
435 //定义一个类,关键字是Class,类名首字母大写
436 class Student {
437     //类的属性(实例变量),属性名studentAge,类型Int
438     var studentAge :Int
439     var studentName:String
440     //    给属性添加init方法,目的为给属性一个默认值
441     init(studentAge:Int,studentName:String){//一个类只能有一个init方法
442         //    给属性赋默认值
443         self.studentAge = studentAge
444           self.studentName = studentName
445     }
446
447     //MARK:注意--类方法 (函数)
448     func printStu(){
449         print(self.studentAge,self.studentName)
450     }
451
452 //    有参数有返回值
453     func  change(stuName:String)->String{
454     self.studentName = stuName
455     return self.studentName
456     }
457 }
458
459 //调用该类
460 //实例化一个类对象
461 let studentItem = Student(studentAge: 26, studentName:"我饿了")
462 //属性的设置和访问
463
464 studentItem.studentAge = 24;
465
466 //print(studentItem.studentAge)
467
468 //studentItem.printStu()
469
470 //print(studentItem.change("嗯哼"))
471
472
473 //MARK:   ---结构体---
474 //定义一个结构体,关键字struct
475 //结构体不需要写init方法,因为它已经为我们写好了
476  struct GirlSTR {
477 //属性
478     var girlName:String
479     var girlHeight:Double
480
481
482 //    方法
483     func printFourBeautifulGirls(girlName1:String ,girlName2:String, girlNmae3:String){//注意‘,’不可少
484     print("四大美女---\(self.girlName) \(girlName1)  \(girlName2)  \(girlNmae3)")
485
486     }
487
488     func printHeith(){
489
490     print(self.girlHeight)
491     }
492 }
493
494 //实例化一个结构体
495
496 var girl = GirlSTR(girlName: "小笼包", girlHeight: 20)
497
498 //访问结构体的属性,设置结构体属性
499 //print(girl.girlName)
500 girl.girlHeight = 1.60
501 //girl.printHeith()
502 //girl.printFourBeautifulGirls("1", girlName2: "2", girlNmae3: "3")
503
504
505 //MARK:类和结构体的区别
506
507 //1.类是引用类型,结构体是值类型
508 var studentItem2 = studentItem;
509 studentItem.studentAge = 2
510
511 print(studentItem.studentAge,studentItem2.studentAge)
512
513
514 var girl2 = girl
515 girl.girlHeight = 1.20
516 print(girl.girlHeight,girl2.girlHeight)
517
518
519 //2.类可以继承,结构体不能继承(最本质)
520
521 //3.结构体对象如果是let类型即使属性是var类型也是不可修改的。类对象即使是let类型,属性如果是var类型也是可以修改的
522
523 //MARK:恒等运算 ===
524 //用来对两个类实例(对象)进行判断,到底是否完全一致
525
526 if studentItem2 === studentItem {
527 print("两个实例相等")
528
529 }else{
530 print("两个实例不相等")
531 }
时间: 2024-11-05 09:58:50

Swift基本语法及与OC比较之二的相关文章

Swift之语法2(精简版)

1.可选类型和强制解包(?和!) 1> 可选类型(?)和强制解包(!) 在swift中,可选类型(?) 其根源是一个 枚举型,里面有 None 和 Some 两种类型.其实所谓的 nil 就是 Optional.None , 非 nil 就是 Optional.Some. 可选类型是的数据如果不进行解包的话,它是一个 Optional 类型的数据,如果我们想要使用原来类型的数据,必须进行解包 // 定义一个Int类型的可选类型变量 var intNumber:Int? = 8 // 把这个类型类

Swift 基础语法

一.变量和常量 定义 let 定义常量,一经赋值不允许再修改 var 定义变量,赋值之后仍然可以修改 //: # 常量 //: 定义常量并且直接设置数值 let x = 20 //: 常量数值一经设置,不能修改,以下代码会报错 // x = 30 //: 使用 `: 类型`,仅仅只定义类型,而没有设置数值 let x1: Int //: 常量有一次设置数值的机会,以下代码没有问题,因为 x1 还没有被设置数值 x1 = 30 //: 一旦设置了数值之后,则不能再次修改,以下代码会报错,因为 x1

Swift 基本语法2

一.?和! 1.可选类型: ? 在swift中,可选类型(?)其根源是一个枚举型,里面有None和Some两种类型.其实所谓的nil就是Optional.None, 非nil就是Optional.Some. ! 代表强制解包 1 // MARK: - ?和! 2 // ?代表可选类型,实际上的值是枚举类型 -- None和Some,其实nil值相当于Optional.None,非nil就是Optional.Some 3 // !代表强制解包 4 5 // 定义一个Int类型的可选类型变量 6 v

Swift基础语法(三)

Array数组在swift中Array相当于oc中的NSMutableArray(变长数组) //1.定义数组 var numarr:Int[] = [1,3,5,7,9]; var strarr:String[] = ["理想","swift"]; //2.访问和修改数租 //(1)数组长度 和 访问数组中的某个元素 println("strarr 数租的长度为:\(strarr.count) 数组的 第1个值为:\(strarr[0])");

Swift常用语法示例代码(一)

此篇文章整理自我以前学习Swift时的一些练习代码,其存在的意义多是可以通过看示例代码更快地回忆Swift的主要语法. 如果你想系统学习Swift或者是Swift的初学者请绕路,感谢Github上The Swift Programming Language开源翻译的中文版,感谢极客学院wiki提供的PDF版本. 代码和PDF版本上传至Github,有兴趣的可以下载下来试试. SwiftTour Base var str = "Hello, World!" print(str) // 变

Swift开发语法

Swift开发入门 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 2014 年,在 Apple WWDC 发布 历史 2010 年 7 月,苹果开发者工具部门总监 Chris Lattner(克里斯·拉特纳) 开始着手 Swift 编程语言的设计工作 用一年时间,完成基本架构 Swift 大约历经 4 年的开发期,2014 年 6 月发表 克里斯·拉特纳 ) 特色 苹果宣称 Swift 的特点是:快速.现代.安全.互动,而且明显优于 Object

初步swift语言学习笔记9(OC与Swift杂)

笔者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/34440159 转载请注明出处 假设认为文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! swift 语言出来后,可能新的项目直接使用swift来开发.但可能在过程中会遇到一些情况.某些已用OC写好的类或封装好的模块.不想再在swift 中再写一次.哪就使用混编.这个在IOS8中是同意的. 先中简单的入手,先研究在同一个project

swift 基本语法---01

Swift是苹果公司于2014年WWDC发布的一款全新的编程语言,这门语言可以用来开发ios,Mac的应用程序,苹果从2010年开始设计Swift语言,耗时4年. Swift的语法内混合了JavaScript.Objective-C.Python这三门语言,语法简单,代码简洁,而且在开发ios和Mac的应用程序时可以和Objective-C混用.Swift拥有了脚本语言语法简单和易于编写和测试的优点,同时也有Objective-C能够更好的利用设备性能的强大之处. Swift的一些简单语法: "

Swift基础语法(常量变量、数据类型、元组、可选、断言等)

Swift 是 iOS 和 OS X 应用开发的一门新语言.然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的. Swift 的类型是在 C 和 Objective-C 的基础上提出的,Int是整型:Double和Float是浮点型:Bool是布尔型:String是字符串.Swift 还有两个有用的集合类型,Array和Dictionary,请参考集合类型. 就像 C 语言一样,Swift 使用变量来进行存储并通过变量名来关联值.在 Sw