设为首页 加入收藏

TOP

Swift基础语法(一)
2017-10-09 14:23:01 】 浏览:2364
Tags:Swift 基础 语法

简介

  • 特点
    (1)优于OC,快速,安全
    (2)取消了预编译指令包括宏定义(OC用的太多了)
    (3)取消了OC指针和不安全访问的使用(看不到星星了)
    (4)舍弃 Objective-C 早期应用 Smalltalk 的语法,全面改为点语法
    (5)3.0中对Foundation框架做了很多改变,去除了NS,将绝大部分class转换成struct结构体(为了考虑性能和安全性,绝大部分使用结构体来代替以前的类,但是在实际使用感觉不到)
    (6)可以使用现有的 Cocoa 和 Cocoa Touch 框架
    , 以前是OC调UIKit,现在就是Swift调UIKit,这点事没问题的
    (7)Swift因为语法的严谨性可以让很多错误提前遇到,这样很少出现bug让程序停在main导致无法找到
    (8)@UIApplicationMain是程序的入口
    (9)只有.h没有.m
    (10)所有的代码都包括在{}里,默认方法func都有缩进!
    (11)语法的allocinit替换成()

  • PlayGround
    (1)可以看苹果官方自带的tips和100个tips,都在Placground来使用

  • 基础点
    (1)不适用self. 在闭包或者编译器提示的时候再使用
    (2)分号是用来分割语句的,如果一行洗很多,就可以加分号,一般时候可以不加
    (3)#function打印执行的函数
    (4)添加标记用到// MARK: - 选择,如果是接下来要做的可以用// TODO:和// FIXME:这些非常有用

一、常量和变量

定义

  • let 定义常量,一经赋值不允许再修改
  • var 定义变量,赋值之后仍然可以修改
    常量和变量的细节

  • 使用 : 类型,仅仅只定义类型
  • 常量有一次设置的机会
  • 应该尽量先选择常量,只有在必须修改时,才需要修改为 var

// 定义常量并且直接设置数值
let x: Int = 10
// 常量数值一经设置,不能修改,以下代码会报错
// x = 30

let y: Int
// 常量有一次设置的机会,以下代码没有问题,因为 `y` 还没有被设置数值
y = 10

// 一旦设置之后,则不能再次修改,以下代码会报错,因为 `y` 已经被设置了数值
// y = 50

print(x + y)

// 变量设置数值之后,可以继续修改数值
var z: Int
z = 100
z = 200

print(x + y + z)

自动推导

Swift 能够根据右边的代码,推导出变量的准确类型
只有相同类型的值才能够进行运算

// 整数默认的类型是 Int
let intValue = 200
// 小数的默认类型是 Double
let doubleva lue = 10.5

// 如果要对不同类型的数据进行计算,必须要显式的转换
print(intValue + Int(doubleva lue))
print(Double(intValue) + doubleva lue)

注意:Swift对类型要求异常严格,任何不同类型的数据不能直接运算(哪怕是Int和Double),不会做一些自动的转换来转换成Double。Swift不存在基本数据类型,Int和Double都是结构体其实,强转用Double(x)完成,或者在定义的时候直接指定变量的类型let x : Double = 10;(很少使用)

二、控制流

if

  • Swift 中没有 C 语言中的非零即真概念
  • 在逻辑判断时必须显示地指明具体的判断条件 true / false
  • if 语句条件的 () 可以省略
  • 但是 {} 不能省略
let num = 100

if num > 10 {
    print("大 \(num)")
} else {
    print("小 \(num)")
}

三目

  • Swift 中的 三目 运算保持了和 OC 一致的风格
  • 提示:以下代码,可以按 cmd + shift + y,打开控制台,查看输出结果
num > 10 ? print("大 \(num)") : print("小 \(num)")

或者

num > 10 ? print("大 \(num)")  : () 
这样就对后面的不作处理。
() 表示空执行。

switch

  • switch 不再局限于整数
  • switch 可以针对任意数据类型进行判断
  • 每一个 case 后面必须有可以执行的语句
  • 不再强制需要 break
  • 如果没有任何需要执行的语句,可以使用 break
    要保证处理所有可能的情况,不然编译器直接报错,不处理的条件可以放在 default 分支中
  • 每一个 case 中定义的变量仅在当前 case 中有效,而 OC 中需要使用 {}
  • 多值 case 可以使用 , 分隔
let scoreString = "优"

switch scoreString {
case "优":
    let name = "学生"
    print(name + "80~100分")
case "良", "中": print("60~80分")
case "差": print("不及格")
default: break
}

switch 的条件判断

  • switch 中可以使用 where 子句判断条件
  • 如果只做条件判断,case 部分可以使用 _ 省略
  • 提示:Swift 中可以使用 _ 忽略任何不关心的内容
let score = 90
switch score {
case _ where score >= 80: print("优")
case _ where score >= 70: print("良")
case _ where score >= 60: print("中")
default: print("差")
}

for

  • swift取消了i++和++i和传统的for循环
for i in 0...5 {

}

for i in 0..<5 {

}
  • 反序遍历
 for i in (0..<10).reversed() {
        
}

三、可选项(Optional)

简要

(1)定义变量时,如果是可选的,表示可以有值,也可以是nil,用“?”
(2)强行解包 “!”,程序员来注意!,并且要少用,可能会崩
(3)最常见的错误:解包的时候发现nil。fatal error: unexpectedly found nil while unwrapping an Optional value
(4)let可选的话,没有默认值,需要赋值。var可选的话,默认值为nil
(5)可选项在参与计算时候必须解包

概念

  • Optional 是 Swift 的一大特色,也是 Swift 初学者最容易困惑的问题
  • 定义变量时,在类型后面添加一个 ?,表示该变量是可选的
  • 定义变量时,如果指定是可选的,表示该变量:
  • 可以有一个指定类型的值
  • 也可以是 nil

定义

  • 格式1(自动推导):var 变量名: Optional = 值
  • 格式2(泛型):var 变量名:Optional<类型> = 值
  • 格式3(简化格式):var 变量名: 类型? = 值
// 格式1
let x: Optional = 20
// 格式2
let y: Optional<Int> = 30
// 格式3
let z: Int? = 10

print(x
首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Core Animation 动画效果介绍 下一篇Go 时间相关

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目