Swift程式語言初探

2022-09-18 08:24:19 字數 2570 閱讀 9142

繼wwdc2014後,新的程式語言swift浮出水面。它具有高速、現代、安全、可互動等特徵,而且其語法簡單,入門門檻低,有望替代語法複雜難懂的objective-c語言。據其作者chris lattner在部落格上聲稱,該語言開發僅僅用了4年時間。而且底層框架基本上都是由其一人開發完畢。

依照慣例,先用swift來編寫乙個簡單的"hello world"

println("hello world")

沒錯,就這麼簡單,沒有import語句,沒有main函式,也沒有@符號,分號也不是必須的。編譯執行能夠看到控制台列印的hello world字樣。

這裡的println是全域性函式,負責列印引數內容,並換行。

swift能夠說是融合其它優秀程式語言的結果,因此很多語法都和其它語言存在共同之處。

以下將簡介一下該語言的一部分內容:

1. swift用var宣告變數,用let宣告常量。如

var legs = 4               // 變數legs

let pi = 3.1415926 // 常量pi

那麼legs和pi究竟是什麼型別呢?答案是type inference(型別猜測)。由於這兩個語句在宣告的同一時候而且初始化,由於4是int型別。因此猜測變數legs為int型別。同理。3.1415926為double型別,因此猜測pi為double型別。

也能夠強制規定型別:

var legs:int

let pi:double

若legs變數是整數型別,僅僅需在變數名後加入冒號,緊接著尾隨乙個型別名就可以。

2. 賦值運算子沒有返回值。而在其它一些語言中。賦值運算子返回的是變數的值。(如 a = 5 表示式返回5),而作為新手在做條件推斷時,經經常使用賦值運算子來取代"=="。導致一些非常難發現的邏輯錯誤,而在swift中不會出現這樣的情況,由於這是乙個語法錯誤。在編譯期間會給出錯誤資訊,如 if a = 5 ,if接受的是乙個bool值,而a = 5沒有返回值,因此會出錯。

/* in c++ */

int a = 1;

if(a = 5) // compile success

/* in swift */

var a = 1

if a = 5 // compile error

// if a == 5 this is correct one

3. switch語句的case後不用加break。

這也是其它語言新手常常犯的乙個錯誤,而在swift中,switch選擇的case語句執行完成後馬上跳出switch語句,而不會由於語句後沒有break繼續執行後面的case或者default語句。

var a = 1

switch a

// no break at all

4.  能夠用n..m 或者 n...m 取代乙個陣列,比方:

for index in 0 ..< 3 

// 0

// 1

// 2

..代表前閉後開。...代表前後都閉合,所以0..3代表陣列[0,1,2],而0...3代表[0,1,2,3]

5. 怎樣在字串中插入變數或常量呢?swift提供乙個特殊的語法:

var number = 5

println("i got \(number) books")

// i got 5 books

是不是非常easy。僅僅需在字串中用\(和)包裹你要插入的變數或常量就可以。

6. 在swift中,存在兩種型別,一種是引用型別(reference type),一種是值型別(value type),class是引用型別。而enumeration和struct是值型別,它們的乙個重要差別是傳遞的方式不一樣,乙個是傳遞副本,乙個是傳遞本身。

在swift中,class的樣子是:

class vehicle 

init(withwheels wheels:int,andmaxpassengers maxpassengers:int)

deinit

}

該類名為vehicle,宣告了兩個屬性,wheels和maxpassengers。以及乙個例項方法description,該方法沒有引數,返回值為字串型別。同一時候。該類提供乙個初始化方法。init是keyword,該方法接受兩個引數,代表之前宣告的兩個屬性。該引數包含三個部分,各自是外部引數名(external parameter name)。區域性引數名(local parameter name)以及引數型別,在方法呼叫裡會用到外部引數名,區域性引數名是用在方法體內的。引進這樣的方法的優點是繼承objective-c的優良特性,使**段更像乙個句子,更富有描寫敘述性。以下來看看怎樣使用這個類:

var porsche = vehicle(withwheels:4,andmaxpassengers:5)

println(porsche.description())

// this vehicle has 4 wheels,max passengers is 5

另外在類的屬性中,?代表optional。即該屬性要麼有值。要麼沒有值(nil)。

swift的語法文件見:

翻譯 Swift程式語言 關於Swift

swift是一門用於ios和os x應用開發的新的程式語言,它以c和objective c語言為基礎,但沒有c語言的相容性約束。swift採用了安全的程式設計模式並且新增了能夠讓程式設計更加簡單 靈活和富有樂趣的現代化特性。swift是白紙一張,再加上有成熟而且深受喜愛的cocoa和cocoatou...

swift 語言的程式設計正規化

一 函式式程式設計 對於支援函式式程式設計的語言,其一般的特點可能包含以下幾種 1 支援遞迴 swift 是支援遞迴的,事實上現在不支援遞迴的程式語言已經很難找到了。在 swift 裡寫乙個遞迴呼叫和其他程式語言並沒有什麼區別 1 23 4567 89 func fib n int int else...

Swift語言程式設計技巧集

如果需要實現已被廢棄的 var 引數的功能 在函式內部修改引數值,函式外部不可見 可以採用宣告變數覆蓋同名引數的辦法 func f i int let x 3 f x x 3試比較 func f i inout int var x 3 f x x 4無引數的閉包在形式上可以和 塊相同,需要根據上下文...