Swift基本语法

写在前面的话:想深入学习Swift的朋友,推荐阅读国人翻译的《The Swift Programming Language》中文版 和 @onevcat 写的 Swifter - 100 个 Swift 必备 Tips、参与翻译的 函数式 Swift 这两本书


1.常量 & 变量

let a = 1
print(a)

var b = 2
print(b)
b = 3
print(b)
  • 小结:
    • let定义常量,不可更改
    • var定义变量,可以更改
    • Swift语句后不用加分号";"
    • Swift中用print()代替OC中的NSlog()
    • Swift中的print()比OC中的NSlog()性能更强

2.定义对象

import UIKit
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        //实例化UIView对象,设置frame
        let testView = UIView(frame: CGRectMake(100, 100, 100, 100))
        //设置颜色
        testView.backgroundColor = UIColor.orangeColor()
        //添加到主视图
        view.addSubview(testView)
    }
}
  • 小结:
    • let修饰,表示testView的内存地址固定,不能修改,但是可以修改testView的内部属性,比如颜色、尺寸等
    • 访问Swift中当前对象的属性,不用写self.

Swift中,尽量使用let修饰,有必要时才使用var,可以使程序更加安全


3.数据类型

Swift基本语法_第1张图片
  • 小结:
    • Swift中会根据常量/变量的实际值自动推算其数据类型
    • Swift没有OC中的隐式类型转换
    • 如果需要转换数据类型,必须进行显式转换
      • 小数默认是Double类型
      • 整数默认是Int类型
      • 注意DoubleInt首字母均为大写
    • 如果要指定数据类型,可以在定义时使用 let/var 常量名/变量名: 类型 = 值

4.逻辑语句

4.1 简单的if语句
if a > 0
{
    print("Hello World")
}
  • 小结:
    • Swift中没有OC中非零即真的概念,所以逻辑判断中必须明确的写明判断条件
    • Swift中if语句的()可以省略,但{}不能省略
4.2 三目运算符
4.3 Optional(可选值)
let url = NSURL(string: "https://www.google.com")

按住alt(option)键,点击url,出现以下内容:

Swift基本语法_第2张图片

  • 小结:
    • NSURL后面的?表示url是可选值,即可能有值也可能没有值
    • 在世实际开发中需要对这样的值进行判断,否则编译器可能报错
    • 因为OC中没有类似机制,所以当对象没有值时程序可能直接闪退,用户体验非常不好,这是Swift比OC优雅的地方
  • 判断:
let url = NSURL(string: "https://www.google.com")
if url != nil
{
    let requesr = NSURLRequest(URL: url!)
}

//或者:
if let url = NSURL(string: "https://www.google.com")
{
    let request = NSURLRequest(URL: url)  
}

5.循环

  • 写法1:
for i in 0..< 10
{
    print(i)
}
  • 写法2:
for i in 0...9
{
    print(i)
}
  • 特殊写法:
for _ in 0...9
{
    print("Hello World")
}
  • 小结:
    • 0..<10表示0到9,不包括10
    • 0...9表示0到9
    • Swift中_表示忽略

6.数组

6.1创建数组
let array1 = ["Hello", "World", 10]
let array2 = ["aa", "bb", "cc"]
let array3 = [1, 2, 3]
let array4 = [1.1, 2.2, 3.3]

print(array1)

for obj in array1
{
    print(obj)
}

print(array1 as NSArray)
Swift基本语法_第3张图片
array1

Swift基本语法_第4张图片
array2

Swift基本语法_第5张图片
array3

Swift基本语法_第6张图片
array4

Swift基本语法_第7张图片
打印结果
  • 小结:
    • 如果初始化时,所有内容类型一致,择数组中保存的是该类型的内容
    • 如果初始化时,所有内容类型不一致,择数组中保存的是NSObject
6.2基本操作
Swift基本语法_第8张图片
拼接/合并/删除
  • 小结:
    • 如果定义数组时指定了保存对象的类型,择不能向数组中添加其他类型的内容
    • var 定义的数组是可变的
    • let 定义的数组是不可变的

7.字典

Swift基本语法_第9张图片

8.字符串

Swift中推荐使用String类型,原因如下:

  • 使用String的原因:
    • String是一个结构体,性能更高
      • String目前具有了绝大多数NSString的功能
      • String 支持直接遍历
    • NSString是一个OC对象,性能略差
    • Swift提供了StringNSString之间的无缝转换
Swift基本语法_第10张图片

9.函数

//没参数没返回值
func testFunc1() -> Void {
    print("Hello World")
}

func testFunc1_1() { //没有返回值的话‘-> Void’可以省略
    print("Hello World")
}

//没参数有返回值
func testFunc2() -> Int {
    return 1
}

//有参数没返回值
func testFunc3(a : Int) {
    print("Hello World")
}

//有参数有返回值
func testFunc4(a : Int, b : Int) -> Int {
    return a + b
}
testFunc4(1, b: 2) //调用函数时第一个形参会省略

//强制显示形参
func testFunc5(x a: Int, y b: Int) -> Int {
    return a + b
}
testFunc5(x: 1, y: 2)

//忽略形参
func testFunc6(a : Int, _ b: Int) -> Int {
    return a + b
}
testFunc6(1, 2)

10.闭包 Closure

//完整写法
let closure1 : (String) -> Void = {
    (name : String) -> Void in
    print(name)
}
closure1("Hello World")

//没有返回值的写法
let closure2 : (String) -> Void = {
    (name : String) in
    print(name)
}
closure2("Hello World")

//没有参数没有返回值的写法
let closure3 : () -> Void = {
    print("Hello World")
}
closure3()

你可能感兴趣的:(Swift基本语法)