3 swift開發iOS swift資料型別

2021-07-28 01:38:42 字數 4262 閱讀 6529

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...