一、Swift雜談
Swift文法出來時間不長,網絡上的各種教程已經鋪天蓋地,可是基本上全部的教程都是來自官方翻譯。
從Swift出來到如今。每天都在學習Swift。以下給出個人感受
- Swift中的非常多概念來源于Objective-c(擴充、協定、外部參數名、閉包記憶體管理等),假設是Objective-c的老手能夠非常快入手
- Swift融合了衆多語言的特性。入手簡單可是短時間掌握全部文法還是有困難的
- Swift開發應用更加高速,語言簡單介紹,包含了非常多的進階特性
盡管Swift語言非常easy,手機相對于Objective-c要快。可是一些原理的東西還是起源于Objective-c。架構中盡管包含了Swift API,可是API的設計非常多都是蘋果特有的,掌握一直到熟練,個人感覺與學習Objective-c不會相差太多。Swift是一個拉開檔次的語言,我想他的出現會終結靠Objective-c文法吃飯那些人的高薪。對于那些懂得思想的人,Swift會成為一把利劍。讓高手開發起來更加得心應手
二、那些你看不懂的文法
Swift的一些文法還是比較有意思的,這裡給出幾個小的代碼片段,測試一下你看懂了沒有:
1、隐式類型與拆封(?
與!)
let possibleString: String?
= "An optional string."
if possibleString {
println(possibleString)
}
let number1 = possibleString!.toInt()
//compile error
let number2 = possibleString.toInt()
2、String是struct。NSString是一個class,他們之間的關系
var str: String = "str"
var nsStr: NSString = "NSString"
var selector: Selector = "selector"
var selector2: Selector = Selector("")
str = nsStr
nsStr = str
3、元組的類型怎麼寫
var tuple: (str: Int, str2: Int) = (2, 3)
tuple.str = 4
tuple.1 = 2
let tuple2 = (4, 5)
//compile error
let2.0 = 1
4、閉包聲明
var closurea: (Int, Int) -> Bool = { n1, n2 in return n1 > n2}
var closureb: (Int, Int) -> Bool = {$0 > $1}
5、閉包傳引用還是複制。以下列印多少
func add(#number: Int) -> () -> Int {
var ret = 0
func incrementor() -> Int {
ret += number
return ret
}
return incrementor
}
let incrementor = add(number: 10)
incrementor()
incrementor()
println(incrementor())
6、auto_closure
var closure1: @auto_closure () -> Int?
= {return 3}()
var closure2: @auto_closure () -> Int = 3
closure1()
closure2()
7、struct哪行代碼出錯了
struct TestStruct1 {
var test: String = "struct"
}
let struct1 = TestStruct1(test: "1111")
struct TestStruct2 {
var test: String = "struct"
init() {
}
}
//compile error
let struct2 = TestStruct2(test: "2222")