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中會根據常量/變量的實際值自動推算其數據類型
    • 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,出現以下內容:

  • 小結:
    • 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)
array1

array2

array3

array4

打印結果
  • 小結:
    • 如果初始化時,所有內容類型一致,擇數組中保存的是該類型的內容
    • 如果初始化時,所有內容類型不一致,擇數組中保存的是NSObject
6.2基本操作
拼接/合并/刪除
  • 小結:
    • 如果定義數組時指定了保存對象的類型,擇不能向數組中添加其他類型的內容
    • var 定義的數組是可變的
    • let 定義的數組是不可變的

7.字典


8.字符串

Swift中推薦使用String類型,原因如下:

  • 使用String的原因:
    • String是一個結構體,性能更高
      • String目前具有了絕大多數NSString的功能
      • String 支持直接遍歷
    • NSString是一個OC對象,性能略差
    • Swift提供了StringNSString之間的無縫轉換

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()

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 2010年7月,chirs Lattner 用一年的時間完成了swift的基本框架,于2014年6月分布, 取消了...
    張無忌_閱讀 554評論 0 3
  • 常量&變量 什么是常量和變量 在Swift中規定:在定義一個標識符時必須明確說明該標識符是一個常量還是變量 使用l...
    去兜風嘍閱讀 601評論 0 0
  • 1.新建Xocode Swift 程序 2.(基本使用) 在Swift中沒有.h 和.m文件 只有一個.Swift...
    圓小米123閱讀 1,662評論 0 7
  • YES 2014WWDC發布 常量和變量使用注意 在實際過程中,建議先定義常量,如果需要修改再改變為變量(更加安全...
    南馮閱讀 577評論 0 0
  • 親愛的種子們: 你們好! 本周我們進行了一次小測,課內和課外的內容各占50%,周三胡老師批完卷后,真的很傷心啊!為...
    胡喜平閱讀 277評論 0 2