翻譯社在Swift說話的世界裡仍延續這個傳統,但更簡化為利用 let 樞紐字去設定常數(constant variable)。Swift說話利用雷同C#或Javascript的var界說變數,但特征又不盡相同,Swift不會直接指派初始值給變數,亦即變數不會有預設值,所以利用var變數之前必須先初始化,否則會産生編譯期間的錯誤。 曩昔Cocoa(以及Cocoa Touch)的架構老是被分成兩種版本,一種是可變的(mutable),也就是可以在履行期間(runtime)改變;另外一種是不可變的(immutable),其初始值弗成改變,例如NSArray與NSMutableArray就是陣列的兩種版本。 在Cocoa與Cocoa Touch的情況下,許多共用的類物都放在Foundation Kit庫下,這些種別包括了NSString 字串庫(利用 Unicode),還有鸠合類別 NSArray 與 NSDictionary翻譯Objective-C 供給了語法糖(syntactic sugar)的體式格局讓這些物件可以整合在統一個語言裡。例如NSString之間合併的表示法以下:#import "MyClass-Swift.h"
.[14]
為了爭奪大量的開辟人員並反複利用已存在的程式碼,Xcode 6 答應在 app target 導入 Objective-C 檔案供給 Swift 利用,透過 Objective-C 的橋接標頭檔(bridging header)來表露給 Swift。
記憶體經管[編輯]
Swift在 Mac OS 和 iOS 平台可以和 Objective-C 利用相同的履行時期(runtime)。這意味著Swift 程式可以履行於今朝已存在的平台之上,包含 iOS 6 和 OS X 10.8 都可以履行Swift的程式.[13] 更重要的翻譯社 Swift 和 Objective-C 的程式碼可並存於單一程式內, 這類延長就猶如 C 和 C++ 的關係一樣。
let 人 = ["新": 67, "青": 8, "玉": 33, "小小": 25]
for (名字, 歲) in 人 {
println("\(名字)是\(歲) 歲。")
}
相幹條目[編纂]
參考資料[編纂]
- ^ https://swift.org/download/#releases
- ^ https://swift.org/download/#previews
- ^ "Apple will open-source its Swift programming language"
- ^ Lattner, Chris. Chris Lattner's Homepage. Chris Lattner. June 3翻譯社 2014 [June 3, 2014].
I started work on the Swift Programming Language in July of 2010. I implemented much of the basic language structure翻譯社 with only a few people knowing of its existence. A few other (amazing) people started contributing in earnest late in 2011, and it became a major focus for the Apple Developer Tools group in July 2013 [...] drawing ideas from Objective-C, Rust, Haskell翻譯社 Ruby翻譯社 Python, C#翻譯社 CLU, and far too many others to list.
- ^ Building assert() in Swift, Part 2: __FILE__ and __LINE__ - Swift Blog -. Apple Developer. [26 September 2014].
Swift borrows a clever feature from the D language: these identifiers expand to the location of the caller when evaluated in a default argument list.
- ^ 6.0 6.1 Apple announces Swift翻譯社 a new programming language for iOS.
- ^ 蘋果新程式說話Swift僅耗時4年完成開發
- ^ "Swift 2.0"
- ^ [1]
- ^ [2]
- ^ Weber, Harrison. Apple announces 『Swift,』 a new programming language for OS X & iOS. VentureBeat. June 2, 2014.
- ^ "Strings and Characters", Apple Inc.
- ^ "Do Swift-based apps work on OS X 10.9/iOS 7 and lower?"翻譯社 StackOverflow
- ^ "Swift and Objective-C in the Same Project"翻譯社 Apple Inc.
- ^ 范凱robbin
- ^ The Swift Programming Language.
|
2010年7月,蘋果開辟者東西部分總監克里斯·拉特納入手下手著手 Swift 程式語言的設計工作,以一年時候,完成根基架構後,他帶領了一個設計團隊大力介入其中翻譯Swift大約歷經4年的開發期,2014年6月頒發翻譯
println("Hello翻譯社 world")
print("Hello, world") /*Swift 2.0 之後不再使用println,改利用print*/
可使用Unicode字元,例如在文字內容有分歧說話的文字時就可以安心添加,沒必要擔心呈現沒法解讀的亂碼:
var implicitInteger = 70
var implicitDouble = 70.0
var explicitDouble: Double = 70
用 let 宣告常數的方式以下:
[8]2015年12月3日,蘋果宣布開源swift,並支援Linux,蘋果在新網站swift.org和託管網站Github上開源了swift,但蘋果的app store並不支援開源的swift,只支援蘋果官方的swift版本,官方版本會在新網站swift.org上定期與開源版本同步翻譯[9][10]
2015年6月8日,蘋果於WWDC2015上宣布,Swift將開放原始碼,包羅編譯器和標準庫。
目次
Xcode的除錯機制針對Swift說話提供REPL(Read-Eval-Print Loop, 這是源自emacs的術語)情況,可以行使Swift語法來評估或與其他程式互動,使Swift編程具有類似Python與Ruby互動性介面(Interactive Shell)。
[12]
var str = "hello,"; str += " world"
型別與變數[編纂]
[11]
Swift被簡單的形容為 「沒有C的Objective-C」(Objective-C without the C)。同時,它供應了雷同C++、C#的定名空間(namespace)、泛型(generic)、運算元重載(operator overloading)。
Swift打消了Objective-C的指標及其他不安全存取的使用,並捨棄Objective C初期套用Smalltalk之語法,周全改為句點默示法(dot-notation)翻譯同許多手稿說話一樣,Swift可以揣摸變數型別(var翻譯社 variant)。
歷史[編輯]
Swift周全利用主動參照計數(ARC)來管理記憶體,庖代曩昔Objective C的垃圾收受接管功能翻譯過去在Objective-C中,強參照(strong reference)即為非ARC中的retain,而弱參照(weak reference)即為非ARC中的assign。為了解決迴圈參照的問題,Swift供應unowned,不克不及設定為optional types,不能加上問號(?)或驚嘆號(!)。
let numberOfApples = 3 let numberOfOranges = 5 let appleSummary = "I have \(numberOfApples) apples." let fruitSummary = "I have \(numberOfApples + numberOfOranges) pieces of fruit."
Swift不支援隱式類型轉換(implicitly casting),是以數與字串之間要以顯式類型轉換(Explicitly casting):
JavaEye的創始人Robbin頒發定見:「對程式設計師來講,熟悉Swift語法也不外一天時間足夠了。樞紐是要供應高階資料類型,簡化Cocoa種別庫,不然用不消Swift都沒區別翻譯」[15]
除錯和其他元素[編纂]
長達600多頁的 The Swift Programming Language 可以在iBooks免費下載。[16]
拉特納本人強調,Playgrounds很大水平是遭到布雷特·維克多(Bret Victor)理念的啟發。Xcode Playgrounds功能是Swift為蘋果開辟對象帶來的最大立異,該功能供應壯大的互動效果,能讓Swift源代碼在撰寫過程當中能即時顯示出其履行結果。[7]蘋果傳播鼓吹Swift的特點是:快速、現代、平安、互動,而且顯明優於Objective-C說話。Swift以LLVM編譯,可使用現有的Cocoa和Cocoa Touch框架。
以下一行即是Hello World程式: 在Swift裡, 字串的積累可以用加法(函式庫、履行期間與佈置[編纂]
類型程式[編纂]
NSString *str = @"hello,"; str = [str stringByAppendingString:@" world"];
+
)運算元作為第一級公民(First-class citizen)的體例直接完成, 上述的例子可以簡化為特點[編輯]
宣佈Optional只需要在類型後面加上問號(?)便可。
為了便利使用,Swift還供給Optional的界說來宣佈nil-free references。一旦var變數宣佈為Optional的,其初始值就會被預設為nil翻譯Optional素質上是enum,有界說None和Some兩種類型,nil等于Optional.None。 還有一個新的運算元,「延續三個等於」(===)被用來判定常數或變數之間是不是為同一物件之實例(instance)。別的,case後面都需要有可執行的代碼(C或C++可連續利用多個case而不需要額外的代碼),不然會發生編譯毛病翻譯
雷同 Objective-C的地方[編輯]
- 根基數值型別(numeric types)大致不異 (例如
Int翻譯社 UInt翻譯社 Float, Double
) - 大量的C 運算元被移出Swift, 但又引入一些新運算元。
- 大括號被用於群組陳說(group statements)。
- 字串全方面支援 Unicode,某些字元乃至可以成為說話的名稱。
- 中括號([], Square brackets)用於陣列的暗示, 宣告陣例以後, 可以指派索引值(index)來進行元素(element)之存取。
- 指派(Assignments)不再回傳值,正確寫法是
if (i==0)
,一般輕易誤寫成if (i=0)
會造成編譯時期毛病(compile-time error)翻譯 - 在
switch
的區塊內不需要再使用break
論述句。 - 註解方式 /* ... */ 可以為巢狀(nested)註解,意思是指註解內可以再有註解,曩昔有些C或C++編譯器不支援巢狀註解。
- 標頭檔(Header files)不再需要。
- 許多C說話家族曩昔惡名昭彰的怪語法(error-prone behaviors)也被改變:
- 不再存在指標。
- 變數之賦值利用等於符號翻譯社 但比力則利用「連氣兒兩個等於」(==)運算元。
- 函式為第一等類型(first-class object),這意味著函式可以作為其他函式的參數與返回值翻譯
- 運算元可在種別內重新界說 (運算元重載),可以生成新的運算元。
- 強型別(strong type)
- 類型推論或隱含類型(Type inference)
- 支援泛型編程。
- 控制陳說(control statement),
for, while翻譯社 if, switch
與Ojbective-C都十分近似翻譯社 但有延長功能, 像是for in
用於荟萃(collection)的輪詢,switch
還可以接管非整數的cases條件值, 諸如斯類翻譯
分歧於 Objective-C的地方[編輯]
計議[編輯]
以下文章來自: https://zh.wikipedia.org/wiki/Swift_(%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80)有關翻譯的問題歡迎諮詢天成翻譯社