Swift语法笔记Part1

Swift-day1内容提要

  • 1.Swift介绍
  • 2.Swift体验
  • 3.常量 变量 重要
  • 4.数据类型
  • 5.逻辑分支 guard
  • 6.循环使用

Swift介绍

  • 2014年Apple WWDC推出,撰写OS X与iOS应用程序
  • 特点:
    • 综合了OC JavaScript C# Python等语言
    • 简单,简洁,方便;可与OC混编
    • 类似java的名字空间namespace、泛型generic、运算符重载operator overloading
  • 要求:先掌握初级部分语法,高阶部分:参考书喵神的

Swift体验

  • 环境:Xcode8 Swift3.0,使用playgroud编写
    • playgroud-Xcode6开始(同年出现的Swift),方便Swift学习,以前项目中哪个部分报错即为更新部分,不需要运行就能看到结果
    • 练习Swift语言推荐使用playground
  • 练习1:导入框架import 框架名
  • 练习2:定义标识符
    • 1️⃣必须明确是一个变量var还是常量let
    • 2️⃣let/var 标识符名称 : 标识符类型 = 赋值
  • 练习3:Swift特性:一行中若只有一条语句,分号可省略
  • 练习4:打印print()不需要@,不需要占位符%


// 1.Swift中如何框架
import UIKit
import Foundation

// 2.如何定义标识符
let sex:String = "girl"
var age = 19
var height:Double = 1.60
age = 20
//sex = "boy"
// 3.在swift中如何一行代码中只有一条语句, 那么语句结束时 ; 可以省略
// 4.swift中如何打印内容
print(sex)
print(height)
print("Hello World!")

常量与变量

  • 变量var 常量let
  • 注意点
    • 1️⃣开发中,优先使用常量,若标识符需要修改,再使用变量
      • 目的:防止重要数据在其他地方不小心被修改
    • 2️⃣常量的本质:指向的内存地址不可修改,但是可以通过内存地址找到对应的对象,之后修改对象的属性
      • 练习1:创建对象let view : UIView = UIView()
    • 相当于view不能再储存一个新对象UIView(),只能修改已创建对象的属性(颜色 透明度等)
  • 练习2:创建UIView对象,并在里面添加UIButton
    • 创建对象直接类名加(),可以在playgroud眼睛出查看
    • 调用方法,统一使用点语法
    • 枚举类型:1️⃣若知道枚举类型,直接使用点语法2️⃣若不知道枚举类型,则需要枚举类型.具体类型

// 使用注意
// 1.在开发中优先使用常量, 防止不小心修改掉之前赋的值
// 2.常量的本质: 指向的内存地址不可以修改, 但是可以通过内存地址找到对应的对象, 之后修改对象内部的属性
let view : UIView = UIView()
let btn = UIButton()
view.alpha = 0.5 //view的属性可以改
btn.frame = CGRectMake(0, 0, 30, 30)
view.backgroundColor = UIColor.redColor()
//注意:调用方法都是用点语法
var label = UILabel()
label = UILabel()
//变量可以更改 label指针指向了2个不同的对象,更改后指向最近的一次修改对象

数据类型

  • 整型、浮点、对象、结构体等
  • 1️⃣默认Int等价于NSInteger、 Uint等价于NSUInteger
  • 2️⃣Float:32位浮点 、Double:64位(浮点型默认)
  • 类型推导--重要
    • 1️⃣定义一个标识符时,直接给其进行赋值,那么可以将标识符后面的类型省略
    • 2️⃣编译器会根据赋值类型,推导出标识符类型
    • 技巧:option+左键 点击标识符可以查看其类型
      let btn = UILabel()
      var π = 3.14
      π = 4 //初始化时确定是Double
      var num = 8
      num = 9.99 //初始化时确定是Int则无法改成Double

基本运算

  • 规则:必须保证类型一致才能进行运算,因为Swift中没有隐式转换
    • OC隐式转换:默认将整型转成浮点型再运算
    • Swift强制转换:转换类型(需转换的标识符)
    • 注意:CGFloat与Double不是一个类型
      let a = 3.51
      let b = 4
      //let c = a + b //必须是相同类型
      //要想计算必须进行强制类型转换.
      //不存在隐式转换
      let result = a + Double (b)
      let result1 = b + Int(a)

逻辑分支

  • if/switch/三目运算符等
    • OC中有非空即真

      //三目运算
      var a = 13
      var b = 21
      let result = a > b ? a : b

if

  • if的使用-OC与Swift的区别
    • 1️⃣if后小括号可以省略
    • 2️⃣没有非0(nil)即真
    • 3️⃣Swift表示真假:bool(true false)
    • 练习1:a是否大于0、a是否不等于0
  • else if
    • 练习2:判断分数属于哪个成绩等级ABCDE

let i = 10
if i > 0
{
print("i大于0")
}
else
{
print("i小于等于0")
}
//-------------
if i != 0
{
print("i不等于0")
}
//-------------
let score = 55
if score < 80 || score >= 60
{
print("及格")
}else if score <= 100 || score >= 80
{
print("优秀")
}
else
{
print("不及格")
}

guard---非常重要

  • 介绍:Swift2.0新增,类似于if
  • 目的:if的地方都能用guard替换,增强代码可读性
  • guard 判断句 else{ return/continue/break }
  • 练习3:利用函数判断某人是否成年是否带身份证是否带起,多重if嵌套使用guard更加简洁易读
    let age = 22
    let sex = 1
    func loving(age : Int) -> Void {
    guard age >= 18 else
    {
    print("不可以谈恋爱")
    return
    }
    print("可以谈恋爱")
    guard sex == 1 else
    {
    print("boy")
    return
    }
    print("girl")
    }
    loving(age)

switch

  • 特点:好用,Swift中苹果增强了switch,
  • 基本使用
    • OC中,一般判断整型,必须加break,否则会case穿透
    • 区别:
      • 1️⃣switch后的()可以省略
      • 2️⃣case语句结束后,可以不加break,不会产生穿透,系统默认加上break
  • 补充点
    • 1️⃣Swift中的case可以判断多个条件,逗号隔开eg:case 0,1
    • 2️⃣若希望产生case穿透,case结束时加上fallthrough
    • 3️⃣可以判断其他类型 OC中只能判断整型
      • a.浮点型
      • b.字符串 eg:加减乘除
      • c.区间类型
        • 区间通常是指数字区间 eg 0-100
        • 类型:
          • ①半开半闭0~9 0..<10
          • ②闭区间0...9
          • 注意没有0<..<10这种写法


//一般用法
let animal = 0
switch animal
{
case 0 :
print("猫科")
fallthrough
case 1:
print("亚洲")
fallthrough
case 2:
print("哺乳动物")
fallthrough
default:
print("亚洲猫科哺乳动物")
}
//特殊用法:1️⃣浮点型2️⃣字符串3️⃣区间
let π = 3.14
switch π
{
case 3.14:
print("是π")
default:
print("不是π")
}

//------------------
let a = 12.0
let b = 15.0
let oper = "/"
var result = 0.0
switch oper
{
case "+":
result = a + b
print(result)
case "-":
result = a - b
print(result)
case "*":
result = a * b
print(result)
case "/":
result = a / b
print(result)
default :
print("错误操作")
}
//------------------
let value = -12
switch value
{
case 60..<70:
print("及格")
case 70..<80:

print("中等")

case 80..<90:
print("良好")
case 90...100:
print("优秀")
default :
print("重修")
}

for

  • Swift3.0中已经不支持原先OC中使用变量进行自加循环了,不支持++ --运算,在Swift2.0+系列还可以使用,
  • Swift中for循环现在只支持区间遍历
  • 1️⃣for i in 区间{ } 区间可以是半开半闭或闭区间
    • 闭包中可以拿到i
  • 2️⃣Swift开发中,如果一个变量、常量暂时不会使用,那么可以用_来替代
    • for _ in 区间 { }
      //1. OC写法 -- 不推荐使用
      //for var i = 0 ; i < 10 ; i += 1
      //{
      // print(i)
      //}
      //------------------------------
      //2. 区间遍历 -- 推荐使用
      //2.1 半开半闭区间
      for var i in 0..<10
      {
      print(i)
      }
      print("---------------")
      //2.2 闭区间
      for var j in 0...9
      {
      print(j)
      }
      print("---------------")
      // 3.如果一个标识符不需要使用, 那么可以通过 _ 来代替
      for _ in 0...5
      {
      print("大美女")
      }

while&do-while

  • while在swift与OC区别
    • 1️⃣while后面()可以省略

    • 2️⃣没有非0(nil)即真 bool(true false)

    • 3️⃣没有do-while循环了,do变成repeat

    • 4️⃣不支持++ --了,使用+= -=

      var str = 10
      while str > 0
      {
        str -= 1
        print(str)
         }
      
       // 2.do while循环
       // 区别: 不再使用do while --> repeat                                 while
            var count = 0
            repeat{
              print(count)
            count += 1
            }while count < 10

你可能感兴趣的:(Swift语法笔记Part1)