數值類型

整數

Swift Int 在沒有指定容量的的情況下, 會依據作業系統決定為 32bit Int32 64bit Int64, Swift 也支援 8/16 bit Int8/16 與不帶負數的 UInt, 所以保留字一共有

 

  • Int
  • Int8
  • Int16
  • Int32
  • Int64
  • UInt
  • UInt8
  • UInt16
  • UInt32
  • UInt64

 

雖然實作上不常用到,但Swift 的整數類別真的有這麼多。Swift並沒有 Long 的整數類型, 但其實與 Int64是相同的。

 

雖然 Int 64 位元的系統下,長度為64bit, Int Int64 仍視為不同的類型,所以必要時,仍需要做型別轉換。比如說,你寫了一個函數參數指定 Int64 的參數,你就不可以使用 Int 類型做為參數,要轉型為 Int64 才行。

 

Value Type Reference Type

很有趣的一件事,整數(與後面幾個資料型別) Swift中,是一個 Value Type,而不是 Objective-C/C int 單純的資料型別,它是大寫的 Int,不是小寫的 int

 

Swift Value Type 是一種介於 Objective-C 基本資料類型( int, long, float 等型別) 類別 (Class) 之間的東西,而不是大多數語言中,單純指資料而言。

 

Value Type不同於 Class 他不支援繼承,所以也沒有像是父類別的東西,但某些方面如同 Class 一樣有一些其他我們以前在學物件導向時所學的一些類別的功能,包括方法、屬性等特性,也支援類似 Objective-C 中的 Category 以及 Protocol 等特性,也就是說,在 Objective-C 中的 int (就是 C int) 就是資料型,無法擴充,但在 Swift Value Type會產生一個實體,可以使用類似 Objective-C Category 之類的方法,擴充,不過我們先了解這是,在 Swift 下,所有的資料【全部】都可視為 Instance,沒有類似 C的資料類型。

 

而與 Objective-C 相同的 Class 類別,在 Swift 中叫 ReferenceType,它就有與 Objective-C class幾乎相同的特性。

浮點數

Swift 可以使用 Float Double 兩種精準度的浮點數, 但若沒有指定, Swift 會認為所有的浮點數為 Double

 

布林值

Swift 的布林值是叫 Bool

 

要特別注意的是,其值只能用 true false 表示, 不可使用 YESNO0,非0 等我們在 Objectvie-C 用的其他方式。

數學運算子

Swift 的運算子, 包括基本的數學四則運算子, 包括 +】【-】【*】【/】與餘數運算子【%, 並且符合一般括優先, 除後加減, 由左至右等原則

 

這部分本身很容易了解, 唯一要注意的是資料類型的問題。

 

四則運算時通常整數運算出來的結果就是整數,但運算子元中有一個為浮點數是, 所有運算就會自動轉成浮點數運算, 會影響輸出結果

 

餘數運算子,如 100 % 30 結果為 10Swift 3 開始,餘數只支援整數的運算不支援浮點數的餘數運算,要用函數來取得。

 

 

以下是一些計算的案例

 

 

print(3/2)      //輸出為 1(整數)

print(3/2.0)    //輸出為 1.5(轉為浮點數)

print(2+3*3)    //輸出為 11( 3*3)

print((2+3)*3)  //輸出為 15( 2+3)

 

print(3/2.0*3)  //輸出為 4.5(3/2.0 轉為浮點數再乘3)

print(3/2*3)    //輸出為 3(3/2 為整數乘3)

print(30 % 13)  //輸出為 5

 

 

指定運算子

主要的運括子為 =】,其他括括運算後指定的【+=】【-=】【/=】【*=】【%=

 

var a = 1

a += 1

print(a)               // 輸出 2

 

要注意的是, Swift 的指定運算子是沒有回傳值的, 不同是 Obj-C 一樣會回傳結果, 所以不能把指定運算的成功與否當成數字來使用。例在Objective-C中,如果這樣:、

             

int i =100;  

NSLog( @"%i", i += 50 );

 

會輸出 150,但若在 Swift中,執行以下的程式

 

 var a = 100

 print( a += 50 ) //輸出 ()

 

 

輸出的會是一對括弧, 表示沒有回傳,由於沒有回傳值,所以我們就不能連續指定,如 a = b = 3 】或者加總比較條如【 a == ( b += 3 )】之類的條件式,在Swift 都是不被准許的語法。

 

另外 Swift 3 之後, 沒有 C/Obj-C 遞增/遞減運算子【++】【--】所以像是 a++ 之類的寫法, 必需要改寫為 a += 1

 

比較運算子

所有標準 C 語言中的比較運算都可以在 Swift 中使用。

 

  • 等於(a == b
  • 不等於(a != b
  • 大於(a > b
  • 小於(a < b
  • 大於等於(a >= b
  • 小於等於(a <= b

 

邏輯運算子

邏輯運算的操作物件是邏輯布林值。Swift 支援基於 C 語言的三個標準邏輯運算。

 

  • 邏輯非(!a
  • 邏輯且(a && b
  • 邏輯或(a || b

 

創作者介紹

X Code Objective-C Swift 學習記錄 for iOS & macOS (OS X)

shenfive 發表在 痞客邦 PIXNET 留言(0) 人氣()