2015年8月4日 星期二

「swift」筆記1

1.swift不會自動幫你調整語句













以上錯誤的原因在於=和後面的值並沒有空間間隔,正確語法應該如下




















2. var 並不是像JavaScript一樣,指的是一佪不嚴謹的型態,而單純是表示這是一個
變數,有點類似VB6的Dim .

3.swift是採取推論型態(infer type),例如 var str = "abc" ,刖str為String,

若var num = 10 則num為int型態,若 var num2=3.14159則num2為 double

4.明確指定型態

var str:String

str = "test"

5.let com = "gogo"  表示這是一個常數

6.布林值應用

 var isOk:Bool  
 //也可以用1/0  
 isOk = true   
 var compare1=100>200  
 //conditional 控制流程  
 if (compare1)  
 {  
   println("成立")  
 }  
 else  
 {  
   println("不成立")  
 }  

7.元組應用

 var HttpError=(404,"not found")  
 //assignaccess  
 var(errorcode,message)=HttpError  
 print(" 網頁錯誤代碼: \(errorcode) 訊息:\(message)")  

在HttpError中可以有不同的型別以及不限定HttpError內容有多少個資料。

errorcode取值時是依據HttpError變數的順序,

\(errorcode)是用來做parttern print

8.具名元組應用

 var personal2=(id:"001", name:"張三豐" , address:"大陸武當山" , salary:50000)  
 personal2.address="高雄市大甲區"  
 //取出具名配對值  
 println("編號:\(personal2.id) 姓名:\(personal2.name)地址\(personal2.address) 薪資:\(personal2.salary)")  

可以像物件的屬性一樣取值。

9.collection
 var employees=[  
   (id:"001", name:"張三豐" , address:"大陸武當山" , salary:50000),  
   (id:"002", name:"張無際" , address:"大陸武當山" , salary:50000),  
 ]  
 println(employees.count)  
 var e1=employees[1]  
 println("編號:\(e1.id) 姓名:\(e1.name)地址\(e1.address) 薪資:\(e1.salary)")  

可以在collection中宣告多組具名的元組應用,並且像array一樣用index取一整組出來用。

10.將字串轉成Int

 //定義字串  
 var myStr = "123"  
 //轉成Int  
 var r1=myStr.toInt()  

這裡要注意一件事,先看下一面這張圖






















你會發現回傳的Int型別有個問號,swift引入了Optional觀念,在轉型失敗時,會傳回nil,
而不會因為沒有try catch而整個crash。而Optional在做運算時必須Implicit casting
才能使用。

下圖是轉換成Int後,xcode會告訴你這是一個Optional(123)













我們要先對它做隱含轉型,在變數後方加入一個驚嘆號後,它變成123了


























如果轉型失敗則會是nil ,可以先判斷是否為nil不需要用到try catch
 //: Playground - noun: a place where people can play  
 import UIKit  
 //定義字串value type  
 var myStr = "abc"  
 //!表示隱含轉型  
 var r1=myStr.toInt()  
 if (r1 == nil)  
 {  
    println("not Int")  
 }  
 else  
 {  
   println(r1!)  
 }  

沒有留言:

張貼留言