Swift 3.0語法(初級)

1. 基本類型

1.0 常量、變量和申明

  • Swift中用let關(guān)鍵字申明常量
  let num = 1000

在編程中一個量被申明出來賦予初值后不再改變了,在這種情況下蘋果建議我們把這些量申明成常量,這樣對整個計算機資源的消耗比較小,整個程序更加的優(yōu)化

  • Swift中用var關(guān)鍵字申明變量
  var index = 2

1.1 類型推斷

從上面的列子中,我們定義常量和變量的時候,并沒有指定它的類型,這樣的寫法在編譯器中并沒有報錯,這似乎有些不合常理。因為在OC中聲明一個變量時,必須要指定它的數(shù)據(jù)類型,eg:

const int count = 8;
NSString *str = @"Objective-C";

這個是因為在聲明變量的時候,不需要指定數(shù)據(jù)類型的特性依托于Swift強大的類型推斷功能。
在Swift中,聲明常量和變量可以通過在初始化時判斷傳遞給它的具體值得類型,并且把這個類型作為常量和變量的類型,eg:

let count = 8 // count 會被推斷為Int類型
var str = "Swift" // str會被推斷為String類型

當然,Swift也支持在聲明時顯式地指定常量或者變量的數(shù)值類型:

var name:String = "DeveloperLY"

1.2 注釋

有編程經(jīng)驗的朋友對注釋肯定不會陌生,Swift中也分為單行注釋和多行注釋。這里面Swift的多行注釋不同于其它語言,Swift支持嵌套注釋。

/*
 這里是多行注釋
 /*
 Swift的多行注釋不同于其它語言,Swift支持嵌套注釋
 */
 */

1.3 控制臺輸出常量和變量

如果要把常量和變量在控制臺中打印,則用print函數(shù)。Swift2.0開始println()print()已經(jīng)整合成print()。所以這個函數(shù)是默認換行的。
print(items: Any...)是默認換行的,參數(shù)items是可變參數(shù)。

print("Hello, Swift") // 會自動換行
print("Hello, Swift", terminator: "") // 設(shè)定結(jié)束符為空字符串,不進入下一行(不換行)

你也可以對items中的參數(shù)指定分隔符和終止符,即使用另一個重載的print方法:

 print("a", "b", "c", separator: "+", terminator: "end")

打印結(jié)果:
a+b+cend

  • 注意:帶有分隔符和終止符的print方法是不換行的。

Swift是采用字符串插值的方式在輸出的內(nèi)容中加入常量或者變量的值。eg:

let name = "DeveloperLY"
print("我的名字是\(name)")

打印結(jié)果:
我的名字是DeveloperLY

2. 基本數(shù)據(jù)類型

2.1 整數(shù)

Swift提供了IntUInt兩種整數(shù)類型,分別表示有符號和無符號的整數(shù)類型。另外IntUInt后面可以帶有數(shù)組8、16、32和64,以表示8、16、32和64位的整數(shù)。一般來說,我們并不需要指定整數(shù)的長度,使用UInt的情況也很少,在開發(fā)中使用Int類型即可。IntUInt都是可以自適應平臺的類型。

2.2 浮點型

Swift提供了兩種浮點數(shù)類型:FloatDouble。Float表示32位浮點數(shù),而Double表示64位浮點數(shù)。選擇哪種類型根據(jù)業(yè)務對精度的要求。

2.3 布爾類型

Swift提供了一個非真即假的邏輯類型---布爾類型(Bool)。布爾類型有兩個布爾常量:true 和 false。
這里需要注意的是:Swift中的布爾類型不同于OC中的BOOL類型,不再接受0代表false、0<代表true的用法。

2.4 元組類型

Swift中給我們提供了一個非常好用的數(shù)據(jù)類型---元組。它可以把多個值成員復合成一個值嗎,并且這些值成員的數(shù)據(jù)類型可以不同。eg:

let info = ("DeveloperLY", 18, "iOS開發(fā)者")   // 一個包含三個成員值得元組
// 取出元組中的成員值(根據(jù)索引)
let name = info.0
let age = info.1
let job = info.2

// 我們也可以給每個成員值賦值
let info1 = (name: "DeveloperLY", age:18, job: "iOS開發(fā)者")
// 調(diào)用的時候也可以使用名稱調(diào)用
let showName = info1.name
let showAge = info1.age
let showJob = info1.job
// 另外如果想忽略元組中不重要的信息時,可以把元組傳遞到一個新的元組中,把需要忽略的值用“_”表示忽略
let (showName, _, _) = info1
print("name is \(showName)")  // "打印結(jié)果:name is DeveloperLY"

2.5 可選型

可選型Optionals是Swift的新特性,它允許你存儲兩種狀態(tài)的值給Optional,變量:有效值或者nil,可選型用于某些不確定是否有值的情況,定義可選型只需在常規(guī)類型后面加一個“?”即可表示這個值是Optional。
Swift要求所有的Optional屬性都必須有明確的值,如果為空,則必須明確設(shè)定為nil
Optional<T>是一個枚舉類型。

var someOptionalString: Optional<String> = "Optional"
var someOptionalString2: String? = "Optional" // 這句等價于上面一句,這句是推薦寫法,因為它更簡潔,問號(?)是Swift提供的語法糖

// 可選型不能直接使用,使用需要解包
if someOptionalString != nil {
    // 變量不為空
    if someOptionalString!.hasPrefix("Opt") {
        print("has the perfix")
    }
    let empty = someOptionalString?.isEmpty
}
someOptionalString = nil

/*
 使用(!)可以解決無法訪問Optional值得運行錯誤。若要使用(!)強制解析,一定要確保Optional里不是nil參數(shù)
 */

// 顯示解包Optional 變量
var unwrappedString: String! = "Value is expected."
var unwrappedString2: ImplicitlyUnwrappedOptional<String> = "Value is expected." // 和上面完全等價,(!)也是語法糖,推薦寫法
if let someOptionalStringConstant = someOptionalString {
    // 由于變量someOptionalString 有值,不為空,所以 if 條件為真
    if !someOptionalStringConstant.hasSuffix("ok") {
        // does not have the prefix
    }
}

someOptionalString2 = nil
func fooGuard() {
    // 還有一種是先處理為空的
    guard someOptionalString2 != nil else {
        print("value is nil")
        return
    }
}

3. 基本運算符

3.1 賦值運算符

之前在定義常量和變量的時候已經(jīng)接觸過賦值運算符的用法了,Swfit使用等號“=”來表示賦值運算。與其他語言一樣,a = b,表示將b的值賦值給了a。如果是賦值的對象是一個元組,那么元組內(nèi)成員的值在賦值操作中是一一對應的。eg: let (x, y) = (1, 2),則1賦值給x,2賦值給y。
需要注意的是:Swift的賦值語句是沒有返回值的。

if x = y {} // 系統(tǒng)會直接報錯,避免了開發(fā)人員范設(shè)計性的錯誤。

3.2 數(shù)值運算

Swift和OC一樣,支持基本的加減乘除和求余運算。但是Swift中的數(shù)值運算比OC更加的強大。比如Swift中的“+”可以直接拼接字符串。Swift中的求余運算“%”可以對浮點數(shù)求余。

3 + 1
5 - 2
2 * 4
4 / 2
"iOS" + "開發(fā)者"
5 % 3
5.3 % 3
6 % 2.5

3.3 自增和自減運算

Swift 3.0之后已經(jīng)去掉了 “++”、“--” C語言風格的操作符進行自增和自減的操作了,新的寫法:

 var a = 1
 a += 1 // 自增
 a -= 1 // 自減

相比于“++”、“--”,上面的寫法可以知道自增和自減的“步長”。

3.4 復合賦值

Swift提供把運算符和賦值復合起來使用的復合操作,與自增和自減操作類似,a += 2 的操作等同于 a = a + 2;

3.5 比較運算

所有C中的比較運算符在Swift中都可以使用。另外,在Swift中,“==”可以用在任何類型的比較中,而不像OC中那樣使用不同的isEqual方法。比較運算會返回Bool類型的比較結(jié)果。

3.6 三元運算符

與OC中的三元運算符用法一致,格式為:判斷條件 ? 為真時操作 :為假時操作。

3.7 邏輯運算符

Swift中的邏輯運算符的操作對象是布爾值。沿用了C語言中的三種邏輯運算:與、或、非。

3.8 范圍

在OC中,可以使用Range函數(shù)來指示一個起始位置和長度,從而框定一個范圍。
Swift中的范圍使用起來方便了許多,有兩種形式:

  • 1...9 表示閉區(qū)間[1, 9],也就是從1到9的范圍。
  • 1..<9 表示半閉區(qū)間[1, 9),也就是從1到8的范圍。

4. 字符串與字符

在Swift中,字符串的類型是String,不論定義的是常量字符串還是變量字符串。

let Str = "不可變字符串"
var mutableStr = "可變字符串"

// 連接字符串
let firstStr = "Swift 是未來iOS的主流開發(fā)語言,"
let secondStr = "你認為呢?"
let swiftStr = firstStr + secondStr

// 判斷字符串相等
let str1 = "DeveloperLY"
let str2 = "DeveloperLY"
if str1 == str2 {
  print("相同")  // 會執(zhí)行
}

處理字符串的難點是字符串的索引和字符串的創(chuàng)建,以及如何創(chuàng)建一個字符串的子串。
Swift的字符串是由另外一個類型來索引的,這個類型就是String.Index。
(未完待續(xù)...)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于 Swift 重要這個文檔所包含的準備信息, 是關(guān)于開發(fā)的 API 和技術(shù)的。這個信息可能會改變, 根據(jù)這個文...
    無灃閱讀 4,630評論 1 27
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,202評論 1 10
  • 鳳妹子的姣美是無可挑剔的。 一米七二的高挑身材,削瘦而有形。 紅紅的小嘴嵌在那張精美絕倫的臉上,活像一顆熟透的櫻桃...
    香辣豌豆閱讀 939評論 1 2
  • 還是感到有點后悔,前段時間拒絕了他。第一次,拒絕了他。大概他也萬萬沒有想到我會如此決絕。糾纏了那么久,是時候做個了...
    繁華如三千東流水閱讀 296評論 0 0
  • 這個雨后的清晨,綠葉在紅花的身旁輕輕耳語,多少纏綿悱惻的情話溢出,成了這晶瑩渾圓的字字句句。 一半是搖曳的火焰,一...
    c小塵閱讀 407評論 4 7

友情鏈接更多精彩內(nèi)容