Swift基础语法(-)

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

Swift基础语法(-)_第1张图片
新建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 + 鼠标左键,进行查看数据的类型


Swift基础语法(-)_第2张图片
查看数据类型.png

2.Swift中的数据类型

Swift基础语法(-)_第3张图片
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语句,所以只会说困着,所有困但是不让走睡觉,这个男朋友当的不行,所有困了不让睡觉一定是错的,女朋友可是会生气的


Swift基础语法(-)_第4张图片
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基础语法(-))