Swift基础01

Swift基础01

常量和变量的定义

  • 用 var 来定义一个变量,用 let 定义一个常量
  • 变量或常量的后面接一个 : Int, 指定数据类型
  • 在 swift 中,布尔值用的是 true/false
var a: Int = 5 //定义一个Int型变量
var b: Float = 6 
var c: Double = 5.6 
var d: Bool = true  //布尔值
var e: Bool = false 
var f = (6, "hello") //定义一个元组变量
let aa: Int = 5 //定义一个Int型常量

类型的自动推导

  • swift会根据等号右边的值,自动推导变量/常量的类型
  • Xcode中按 option + 左鼠标键 : 查看变量/常量的数据类型
  • 变量或常量,如果没有初始值,就需要指定数据类型
var bb = 5 //自动推导为Int型
var bc = 5.5 //自动推导为Float型
let str = "hello, world" //自动推导为String型
var dd:Int

没有隐式转换

  • swift 不同类型进行运算不会自动执行隐式转换,需要强制转换
var sum = bb + Int(bc) //如果不进行强制类型转换则会报错
var sum2 = Double(bb) + bc

if条件语句

  • if后面的条件语句,可以省略小括号
  • if后面的大括号,一定要加。不管它是否只有一条语句
  • swift 没有非零即真的概念,条件语句必须是布尔值或者是条件表达式
let a = 4

if a > 4 {
    print("哟, a 大于 10 哦")
} else if a < 5 {
    print("哟, a 小于 5 哦")
} else {
    print("hello world")
}

switch语句

  • swift 中的 switch 可以判断任何类型
  • case 后面必须有执行语句
  • break 可以不写
  • case 后面的执行语句不需要加 大括号
  • switch 必须覆盖所有条件,不然会报错。如果覆盖不了,可以加个 default
let score = 70

//oc 的 switch

switch score {  
case 60:
    print("hello")
    print("爹妈不亲")
case 70:
    print("及格了,ok")
case 80:
    print("优秀")
default:
    print("仍需努力")
}
// switch 判断字符串类型
let score1 = "70"

switch score1 {
case "60":
    print("爹妈不亲")
case "70":
    print("及格了,ok")
case "80":
    print("优秀")
default:
    print("仍需努力")
}
// switch 做区间判断
// 区间运算符 0..<5: 相当于数学里面的 [0, 5)
// 区间运算符 0...5: 相当于数学里面的 [0, 5]

let score2 = 80

switch score2 { 
case 0..<60:
    print("hello")
    print("爹妈不亲")
case 60...80:
    print("及格了,ok")
case 80...100:
    print("优秀")
default:
    print("仍需努力")
}
// 绑定:在条件判断语句中。将需要判断的值 x,赋给一个临时的变量/常量 y。这个过程就是将 x 和 y 绑定。 在后面我们可直接使用 y

let x = 50

switch x {
case let y where y < 60: //执行此处
    print("hello, \(y)") 
    print("爹妈不亲")
case let y where y < 80:
    print("及格了,ok")
case let y where y < 100:
    print("优秀")
default:
    print("仍需努力")
}

循环

  • for循环
//oc风格的 for 循环
for var i = 0; i < 10 ; i++ {
    //print("I love you")
}

//用区间运算符做循环的时候, i 不需加加 varlet
for i in 0..<10 {
    print("I love you\(i)")
}

//如果我们不需要用 i 的值,可以用一个 _ 把 i 忽略掉
for _ in 0..<10 {
    print("I love you")
}
  • while循环
var a = 5

while a > 0 {
    print("好好听课")
    a--
}
  • 类似do…while循环
var b = 5
repeat {
    print("====好好听课")
    b--
} while b > 0

可选值

  • 一个变量或常量,可能有值,可能没有值,就叫可选值
  • 变量可选值,没有赋值之前,是 nil
  • 常量可选值,在没有赋值之前,它是空的,使用它会直接报错
  • 在使用可选值之前,需要对可选值,强行解包,给可选值加一个!如果强行解包发现没值,编译器会直接报错。
var a: Int? = 5 //定义变量可选值
let b: Int? //定义常量可选值
var c  =  a! + 5

可选绑定

  • 使用可选值时,需要注意可选值是否有值,如果使用了没有值得可选值,会使代码出错

  • 使用可选值的三种方法:

// 1.先判断可选值,是否为 nil,不为nil才使用
// 这个方法比较 low,很少用

var str: String? = "hello"
var age: Int? = 10
var str1 = "aa"

if str != nil && age != nil{
    if age! > 10 {
        var st2 = str! + str1
        //print(st2)
    }
}
//2 .可选绑定
//主流写法
//可选绑定,就在判断条件语句中,定义一个常量或变量 x,将可选值 y 赋值给这个常量或变量。如果可选值 y 有值,则绑定成功,可以在后面直接使用 x。如果没有值,绑定不成功,做异常处理。
//如果需要对多个值进行可选绑定,可以用 , 分隔开
//如果想修改被绑定的值 x, 需要用 var。修改了 x。y 不会变
//可选绑定还可以接 where 来增加我们的条件判断的功能

if var str = str, let age = age  where age > 10{
    str = "world"
    print(str)
    print(str)
} else {
    //异常处理
}
//3. guard let/var
//guard letif let 逻辑相同,语法相反,绑定成功的逻辑代码需要写在大括号的外面。
//guard 的大括号里面,需要我们 return
//guard let 可以减少代码的层级

func guardlet() {
    guard let str = str else {
        return
    }

    print("========\(str)")
}
guardlet()

你可能感兴趣的:(swift)