寫一個簡單程式來比較 Swift 與 Objective-C
WWDC 2014 發表了新一代程式語言 Swift 之後,在使用Xcode 6可以選擇要使用的語言:
可以因應你專案的需要來選擇適合的主要程式語言,目前在Swift中可以與Objective-C混用,這往後再來看看怎麼使用,這次要實作的是同樣的程式,在程式碼中來比較Swift與Objective-C上的差異。
程式畫面
下面為使用Swift為主要語言專案的畫面:
下面為使用Objective-C為主要語言專案的畫面:
兩個程式的功能皆為按下Button
後會將上面的Label
顯示像圖中的1234
的內容
程式內容
Swift
Swift程式檔案被設計為單一檔案,所有需要引用的都在程式最前面使用import
將物件引入,他的寫法也非常簡潔,一開始看感覺是很多種語言的混合體,但在使用規則上就沒有Objective-C那麼嚴謹,不過因為很多例外情況已經被Swift給處理,並不需要像Objective-C要自已增加很多例外處里。
import Cocoa class AppDelegate: NSObject, NSApplicationDelegate { @IBOutlet var window: NSWindow @IBOutlet var labelText : NSTextField @IBAction func btnAction(sender : AnyObject) { labelText.stringValue = "1234" } func applicationDidFinishLaunching(aNotification: NSNotification?) { // Insert code here to initialize your application } func applicationWillTerminate(aNotification: NSNotification?) { // Insert code here to tear down your application } }
Objective-C
Objective-C的用法就不用再多說,它與C語言一樣是有程式檔與標頭檔的規則,程式如下:
//AppDelegate.h #import <Cocoa/Cocoa.h> @interface AppDelegate : NSObject <NSApplicationDelegate> @end
//AppDelegate.m #import "AppDelegate.h" @interface AppDelegate () @property (weak) IBOutlet NSWindow *window; - (IBAction)btnAction:(id)sender; @property (weak) IBOutlet NSTextField *labelText; @end @implementation AppDelegate - (IBAction)btnAction:(id)sender { self.labelText.stringValue = @"1234"; } - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { // Insert code here to initialize your application } - (void)applicationWillTerminate:(NSNotification *)aNotification { // Insert code here to tear down your application } @end
結語
以上看完可以了解到,同樣功能之下,的確Swift語言在撰寫上與Objecive-C有很大的差異,變數宣告上也與PHP這類的高階語言有類似的意義,不用太在意變數類型,根據使用情形,編譯器就會知道你的變數是字串還是數值類型,下面則是2個語言在Xcode上所看到的結果,將內容並排比較一下:
Swift往後應該是Apple大力支持下的新一代語言,初步使用結果可以感覺到它集合很多Objective-C的經驗後,將語法弄的更明確,在寫程式上只要專心的寫程式,很多問題都已經在語法建立時都有對應的方法,像是Objective-C的mutable
與immitable
,在Switft中使用了var
與let
,讓人更容易了解它的用途,根據這種易用度,讓我想到以前的Basic時代,只要是學生,人人都應該會Basic寫程式。如果一個程式語言容易使用的情況下,一方面在快速開發有幫助,另一方面可以降低學習曲線,我想在不久的將來,不光是中小學生會玩樂高機器人而已,而是Swift也可能成為中小學生會的程式語言之一。