swift資料型別
在程式語言程式設計時,需要使用各種資料型別來儲存不同的資訊。
變數的資料型別決定了如何將代表這些值的位儲存到計算機的記憶體中。在宣告變數時也可指定它的資料型別。所有變數都具有資料型別,以決定能夠儲存哪種資料。
內建資料型別
swift
提供了非常豐富的資料型別,以下列出了常用了幾種資料型別:
int
一般來說,不需要專門指定整數的長度。
swift
提供了乙個特殊的整數型別
int,長度與當前平台的原生字長相同: 在
32位平台上,
int和
int32
長度相同。 在
64位平台上,
int和
int64
長度相同。
除非你需要特定長度的整數,一般來說使用
int就夠了。這可以提高**一致性和可復用性。即使是在
32位平台上,
int可以儲存的整數範圍也可以達到
-2,147,483,648~2,147,483,647
,大多數時候這已經足夠大了。
uint
swift
也提供了乙個特殊的無符號型別
uint
,長度與當前平台的原生字長相同: 在
32位平台上,
uint
和uint32
長度相同。 在
64位平台上,
uint
和uint64
長度相同。
注意:盡量不要使用
uint
,除非你真的需要儲存乙個和當前平台原生字長相同的無符號整數。除了這種情況,最好使用
int,即使你要儲存的值已知是非負的。統一使用
int可以提高**的可復用性,避免不同型別數字之間的轉換,並且匹配數字的型別推斷,請參考型別安全和型別推斷。
浮點數浮點數是有小數部分的數字,比如
3.14159
,0.1
和-273.15。
浮點型別比整數型別表示的範圍更大,可以儲存比
int型別更大或者更小的數字。
swift
提供了兩種有符號浮點數型別:
double
表示64
位浮點數。當你需要儲存很大或者很高精度的浮點數時請使用此型別。
float
表示32
位浮點數。精度要求不高的話可以使用此型別。
注意:double
精確度很高,至少有
15位數字,而
float
最少只有
6位數字。選擇哪個型別取決於你的**需要處理的值的範圍。
布林值swift
有乙個基本的布林(
boolean
)型別,叫做
bool
。布林值指邏輯上的值,因為它們只能是真或者假。
swift
有兩個布林常量,
true
和false。
字串
字串是字元的序列集合,例如:
"hello, world!" 字元
字元指的是單個字母,例如:
"c"可選型別
使用可選型別(
optionals
)來處理值可能缺失的情況。可選型別表示有值或沒有值。
數值範圍
下表顯示了不同變數型別記憶體的儲存空間,及變數型別的最大最小值: 型別
大小(位元組)
區間值
int8 1
位元組-127
到127
uint8 1
位元組0
到255
int32 4
位元組-2147483648
到2147483647
uint32 4
位元組0
到4294967295
int64 8
位元組-9223372036854775808
到9223372036854775807
uint64 8
位元組0
到18446744073709551615
float 4
位元組1.2e-38
到3.4e+38 (~6 digits)
double 8
位元組2.3e-308
到1.7e+308 (~15 digits)
型別別名
型別別名對當前的型別定義了另乙個名字,型別別名通過使用
typealias
關鍵字來定義。語法格式如下:
typealiasnewname = type
例如以下定義了
int
的型別別名為
feet:
typealias feet = int
現在,我們可以通過別名來定義變數:
import cocoa
typealias feet = int
var distance: feet = 100
print(distance)
我們使用
playground
執行以上程式,輸出結果為:
100型別安全
swift
是乙個型別安全(
type safe
)的語言。 由於
swift
是型別安全的,所以它會在編譯你的**時進行型別檢查(
type checks
),並把不匹配的型別標記為錯誤。這可以讓你在開發的時候盡早發現並修復錯誤。
import cocoa
var vara = 42
vara = "this is hello"
print(vara)
以上程式,會在
xcode
中報錯:
error: cannot assign value of type 'string' to type 'int'
vara = "this is hello"
意思為不能將
'string'
字串賦值給
'int'
變數。
型別推斷
當你要處理不同型別的值時,型別檢查可以幫你避免錯誤。然而,這並不是說你每次宣告常量和變數的時候都需要顯式指定型別。
如果你沒有顯式指定型別,
swift
會使用型別推斷(
type inference
)來選擇合適的型別。
例如,如果你給乙個新常量賦值
42並且沒有標明型別,
swift
可以推斷出常量型別是
int,因為你給它賦的初始值看起來像乙個整數:
let meaningoflife = 42
// meaningoflife
會被推測為
int 型別
同理,如果你沒有給浮點字面量標明型別,
swift
會推斷你想要的是
double:
let pi = 3.14159
// pi
會被推測為
double 型別
當推斷浮點數的型別時,
swift
總是會選擇
double
而不是float。
如果表示式中同時出現了整數和浮點數,會被推斷為
double
型別:
let anotherpi = 3 + 0.14159
// anotherpi
會被推測為
double 型別
原始值3
沒有顯式宣告型別,而表示式中出現了乙個浮點字面量,所以表示式會被推斷為
double
型別。 例項
import cocoa
// vara
會被推測為
int 型別
var vara = 42
print(vara)
// varb
會被推測為
double 型別
var varb = 3.14159
print(varb)
// varc
也會被推測為
double 型別
var varc = 3 + 0.14159
print(varc)
執行以上**,輸出結果為: 42
3.14159
3.14159
3 Swift 陣列 字典 集合
在oc中陣列,字典,集合有自己的表示方法,分別是array,dictionary,set 與 string 都屬於數值型別變數,他們都屬於結構體。使用簡介靈活多變,個人感覺可讀性變差了很多,用起來由點彆扭,還需要慢慢適應。基本上功能都是照辦oc的,主要包括建立,增,刪,改,查,遍歷。下面從陣列開始說...
Swift語法基礎 3 Swift的函式和閉包
在swift中,一樣是存在函式和閉包的,現在讓我們來看看swift的函式和閉包 func person name string,age string string println person xiaoming 20 列印出來的結果 the name is xiaoming,age is 20fun...
Swift開發基礎
import uikit extension double class viewcontroller uiviewcontroller else let m 20 if m 20 字元 字串定義 var charvalue1 character a 這是乙個字元 var strvalue1 stri...