Swift基础01

来源:互联网 发布:广数g90编程实例 编辑:程序博客网 时间:2024/06/03 22:43

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 = 4if 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 的 switchswitch 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 = 80switch score2 { case 0..<60:    print("hello")    print("爹妈不亲")case 60...80:    print("及格了,ok")case 80...100:    print("优秀")default:    print("仍需努力")}
// 绑定:在条件判断语句中。将需要判断的值 x,赋给一个临时的变量/常量 y。这个过程就是将 x 和 y 绑定。 在后面我们可直接使用 ylet x = 50switch 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 不需加加 varletfor i in 0..<10 {    print("I love you\(i)")}//如果我们不需要用 i 的值,可以用一个 _ 把 i 忽略掉for _ in 0..<10 {    print("I love you")}
  • while循环
var a = 5while a > 0 {    print("好好听课")    a--}
  • 类似do…while循环
var b = 5repeat {    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? = 10var 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()
0 0
原创粉丝点击