Swift基础语法(-)

作者: e40c669177be | 来源:发表于2016-09-01 16:17 被阅读112次

    swift基础语法可以在playground中编写,这样直接可以在右侧看到结果,不需要运行

    新建playground

    1.1标识符

    定义标识符时,必须指出是变量还是常量
    格式:标识符 : 类型
    let定义常量,一旦定义就不可更改
    var定义变量,可以更改

    let age : Int = 30
    let n : Double = 3.00
    var age :Int = 30
    

    变量和常量的命名

    let pi = 3.13
    let 你好 = "你好世界"
    let 🙊 = "monkey"
    let n123 = "sss"
    

    在命名一个编程元素时,要遵循下列命名规则:

    1. 名称的第一个字符必须是字母或汉字。

    2. 不能在名称中使用空格、句点(.)、感叹号(!)、@、&、$、#等已有特殊含义的字符。
      3.不能超过255个字符,控件、窗体、类和模块的名字,不能超过40个字符。

    3. 不要与已有的关键字同名,否则,在编程中会出现很多麻烦。

    4. 在自定义名称时,除了必须遵循VB的命名规则外,还要使一个名字能反映它所代表的编程元素的意义
      注意:
      1.在开发中优先使用常量,只有在需求更改的时候,在将let改为var
      2.常量的意思是:指向的对象不可修改,即指针不可修改,但是可以通过指针拿到对象,修改其中的属性

      let view : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
      view.backgroundColor = UIColor.redColor()

      //在swift中使用枚举类型,类型.具体的类型
      let btn : UIButton = UIButton(type: UIButtonType.ContactAdd)
      btn.center = CGPoint.init(x: 50, y: 50)
      view.addSubview(btn)

    1.2Swift的类型推导

    1.如果定义标识符时,直接赋值,那么标识符后面的类型可以省略
    2.Swift中有类型推导,可以根据后面的赋值决定前面标识符的数据类型
    3.可以通过option + 鼠标左键,进行查看数据的类型


    查看数据类型.png

    2.Swift中的数据类型

    Swift中数据类型.png

    类型转换:
    1.将Double类型转换为Int类型,Int(Double)
    哎,前面截图截到了,还要写么,好纠结啊......写,不写,写,不写,算了还是写吧~


    1
    let dou1 = Int(Double)
    

    2.将Int转换为String , Int(String)

    let doub2 = String(dou1)
    

    3.将String转换为Float类型,String(Float)

    let doub3 = Float(doub2)
    

    格式我就不总结了........

    3.判断

    3.1if 语句

    要求:

    1.判断句可以不加()
    2.判读句必须有一个真假值(哦~,忘记说了,Swift中Bool类型,真为true,假为false)
    

    格式:

    if 条件 {    
        若条件为真则执行这部分语句    
    } else {           
        若条件为假则执行这部分语句
    }
    
    看到这里你一定困了吧,我也困了,所有就不举例子了,相信你也会的
    3.2 guard

    1.guard是swift2.0新增的语法,与if非常相似,其设计的目的是提高程序的可读性
    2.guard语句必须自带其好基友else
    格式:

    guard 条件表达式 else{
         break
     }
    语句组
    

    语法:
    1.当条件表达式为true的时候,跳过else语句的内容,直接执行语句组
    2.条件表达式为false的时候,执行else语句的内容,其跳转语句一般为return ,break,continue和throw
    3.guard在函数里面使用,不在函数里使用return ,break.....就不知道该干啥了

    人吧,一困就懒,这个我也不想举例子了....,但是我怕你直接关网页,这个威胁很厉害的,所有................

    补充知识:

    swift中控制转移关键词:
    break continue fallthrough return throw
    1.return :可以结束一个循环,或者函数
    2.break语句将终止整个循环的执行,可以在循环语句中,也可以用于switch语句中
    3.continue:通常用于循环中,告诉循环停止现在执行的语句,开始下一次循环

    //func 函数名(标示符: 类型) ->
    func sleep(time: Int) -> Bool {
        guard time >= 22 else{
             //如果判断就为假,会执行else
            print("困着")//print后面会有自动换行符的
            return true
        }
        //如果为真,继续执行
        print("睡觉")
        return false
    }
    
    sleep(20)
    

    现在过20点了,因为使用的是return语句,所以只会说困着,所有困但是不让走睡觉,这个男朋友当的不行,所有困了不让睡觉一定是错的,女朋友可是会生气的


    2.png

    正好对比下guard和if的区别

    if语句
     for a in 0...4
     {
       if a == 2{
            continue
            print(a) //这条语句用户不会被执行   
        }
      print(a) //输出0,1,,3,4    
    }
    
    guard语句
    for a in 0...4{
        guard a != 2 else{
            continue
            print(a) //这条语句永远不会被用户执行
    
        }
      print(a) //输出0,1,3,4   
    }
    

    break:

    //if语句
    for a in 0...3{
        if a == 2{
            break
         }
        print(a) //输出0,1
    }
    
    //guard语句
      for a in 0...3{ 
        guard a != 2 else{
            print(a)
            break
        }
        print(a) //输出0,1
    }
    

    你问我...什么意思,那就涉及令一个话题了,那个话题就是区间
    区间分为开区间和毕区间
    开区间: 0~10,包括0但是不包括10,跟数学中的开区间是不同的,这个是前毕后开的,[0,10], Swift中写法就是0..<10(中间都不要空格,有空格就会报错的)
    闭区间:0~10,包括0也包括10,是前闭后闭的,Swift中写法 0...10

    3.3 switch

    先比较和OC中的不同:
    1.switch后可以不加()
    2.case后面可以不跟break,默认会有break的
    3.switch中要把所有情况都列举出来,不然会报错的

    switch的基本用法:
    let sex = 0
    switch sex{
    case 0:
        print("男") 
    case 1:
        print("女")
    default:
        print("未知")   
    }
    
    switch:case穿透

    要实现这个效果,需要另外一个关键字fallthrough
    fallthrough:由于switch中的switch语句不会自动的因为没有break而跳转下一个case,因此如果想要像C语言那样,一次执行每一个case就需要fallthrough

    switch sex{
    case 0:
       print("ddd")
       fallthrough
    case 1:
        print("ssss")
    default:
        print("")
     }
    
    3.case中判断多个条件
    switch sex{
    case 0, 1:
        print("正常")
    default:
        print("")
    }
    
    4.判断浮点型(OC中只能判断基本数据类型)
    let a = 3.14
    switch a{
    case 3.14:
        print("pi")
    default:
        print("no pi")
    }
    
    5.判断字符串
    let a = "pi"
    switch a{
    case "pi":
        print("pi")
    default:
         print("no pi")
    }
    
    6.判断区间:
    let score = 88
    switch score {    
    case 0..<60 :
        print("不及格")
    case 60..<70:
        print("刚及格")
    case 70..<90:
        print("良好")
    case 90...100:
        print("优秀")
    default:
        print("错误")
    }
    
    序号写到哪里了,你不记得了吧,恩那太好了,我也不记得了,就随便写了~~~

    4.循环

    4.1 for循环

    先说我们在OC中常规的写法:

    for (var i = 0 ; i < 10; i++){
        print(i)
    }
    

    相信你在Swift中这样写,编译器一定会给你提示的,让你改,因为他觉得写得太繁琐了
    试试我们第二种写法

    for i in 0..<10{
        print(i) 
    }
    

    还有一种写法,当我们不关心i是什么的时候,就直接可以使用'_'来代替'i'

     for _ in 0..<10{
          print("hello world")
    }
    
    4.2while循环,跟OC中差别不大,不解释
    4.3do ....while循环
    var s = 0
    do {
    s += 1;
    print(s) 
    }while (s == 10)
    

    这样写,编译器会给你提示,使用编译器提示的就对了,do.....while正式改名为repeat......while了,还是原来的味道,还是原来的配方.

    9.20更新
    swift中跳出 双层循环:

    findAnswer: for m in 1...300{
    
    for n in 1...30{
        if m*m*m*m - n*n == 15*m*n{
            print(m , n)
            break findAnswer //跳出整个循环,想当与C语言中的goto语句不建议使用
        }
        
       }
    }
    

    switch case 中进行解包

    let point5 = (8,0)
    switch point5 {
    
    case (0,0):
        print ("It's origin")
    case (let x , 0)://这种形式可以理解为任意x的值,y的值为0,与使用_忽略x值不同,把x的值赋给新生成的变量,下面可能使用这个变量
        print("It on the x-axis")
        print("The x value is \(x)")
    //    fallthrough //可以跳进下一个case 
    case (0, let y):
        print("The y value is \(y)")
    case (let x, let y):
    
    break
    
    }
    

    where与模式匹配

    let point4 = (3, 3)
    switch point4{
    
    case let (x, y) where x == y: //限制case所列出的模式
        print("It's on the line x == y")
    case  let (x, y) where x == -y:
        print("It's on the line x == -y")
    case let (x, y):
        print("It's just an ordinary point")
        print("The point is (\(x), \(y))")
    
      }
    
    let age = 19
    switch age{
    case 10...19:
        print("You're a teenager")
    default :
        print("You're not a teenager")
    }
    
    //模式样放在前面等于的变量要放在后面  if case 用法
    if case 10...19 = age{
        print("You're a teenager")
    }
    
    if case 10...19 = age where age > 18{
    
    print("")
    }
    //
    let vector = (4,0)
    if case (let x, 0) = vector where x > 2 &&   x < 5{
       print("It's the vector")
    
    }
    
    //
    for i in 1...100{
    if i % 3 == 0{
        print(i)
      }
    }
    
    for case  let i in 1...100 where i % 3 == 0{
        print(i)
    }
    

    相关文章

      网友评论

        本文标题:Swift基础语法(-)

        本文链接:https://www.haomeiwen.com/subject/lkgcettx.html