iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0
Mobile Development

從零開始的IOS開發日常系列 第 2

[鐵人賽 Day 02] Swift 基本型別

  • 分享至 

  • xImage
  •  

撰寫 Swift 的時候,型別是非常重要的東西

型別標注

//宣告一個整數變數(標注方式)
var a : Int = 123

//宣告一個字串常數(標注方式)
let c : String = "你好哇"

//or(無標註方式)
var a = 123
let c = "你好哇"

通常很少需要型別標注,如果宣告時給了一個初始值,Swift則會自動判斷出型別。

整數

var a = 123
let b = -123

還有一個特殊的無符號整數型別為UInt,這個型別的長度與目前平台的原生字長相同。

浮點數

//宣告浮點數時,如果沒有型別標注,通常會將他判斷為Double
var a = 162.25
let b : float = 175.5

浮點數(Float、Double)指的是包含小數點的數字,Float和Double的差別在於精確。
Float有6位數,Double可以達到15位數。

整數和浮點數轉換


兩個變數相加需要轉換相同的型別,否則程式就會出錯。
相反來說也行,但小數點後面的數字就會被截斷。

布林值

var a = true
let b = false

布林值(bool)指的是邏輯上的值,只能為真或假。

字元及字串

//宣告字串時,不論字數多少,都會判斷為String
let a = "hello"

//除非型別特別標注為Character
let a : Character= "h"

如果要在字串中加入其他變數或常數,要使用()的方式,如下:

元組

元組(tuple)是將多個值組合成一個複合值,其內的型別可以不同,以一對小括號()前後包起來,每個值以逗號,分隔,如下:

//宣告一個元組並填值進去
let a = ("Gary",20,174.99)

要使用其中一個值,可以依照順序的索引值(索引由0算起)取得,如下:

也可以將一個位元組分解成單獨的常數或變數,如下:

如果只需要其中某些值時,分解時可以把不需要的用底線 _ 標記,如下:

或是在宣告元組時就各別給裡面的值一個名稱也可以,如下:

型別別名

型別別名(type aliases)就是給已存在的型別定義另一個名字,必須使用關鍵字typealias來定義型別別名。

//將Int型別定義一個新的名字num
typealias num = Int

//這邊宣告的型別num,也就是Int
var a : num = 123

可選型別

讓變數或常數可以有沒有值的情況,這與零0或是空字串""不同,當沒有值時,變數或常數會返回nil。而nil代表的就是沒有值,任何型別只要有加上可選型別(optional type)都可以設置成nil。使用方法為在型別標註後面加上一個問號?,如下:

//在宣告變數時,型別後面加上?,就是沒有值的狀態
var a : Int?

//若原本有設值,之後再將變數給nil,那就會變成沒有值的狀態
a = 100
a = nil



若字串轉數值類型別,中間有字元的情況下,他也會輸出來避免發生錯誤

強制解析

當你確認一個可選型別一定有值,則可以在這個變數後面加上一個驚嘆號!例子如下:

//宣告一個常數整數並給值
let a : Int? = 1
//以這個例子來說,常數確實有值
//所以加上驚嘆號,表示這個可選型別有值,可以直接使用
print(a!)


//若沒有值的情況仍要使用,則會報錯
//let a : Int?
//print(a!)

隱式解析可選型別

當可選型別第一次被指派值後,如果可以確定他之後都會有值,這時可以將其改為隱式解析可選型別(implicitly unwrapped optional),這樣便不需要每次都判斷及解析,如下說明:

//可選型別
let a : String? = "abcd"
//需要驚嘆號來取值
let b : String = a!

//如果改成隱式解析可選型別,則可直接使用,不用加上驚嘆號
let c : String! = "cdefg"
let d : String = c

上一篇
[鐵人賽 Day 01] Xcode 安裝
下一篇
[鐵人賽 Day 03] Swift Optional
系列文
從零開始的IOS開發日常30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言