一些心得和筆記
本帖最後由 return 於 2015-7-3 01:36 編輯swift的變數一定要先賦予初值如下:
var x
x = 100
....
or
var y:Int
y=123
var x = y*2
...
還有,如下:
var x = 100
var y = x*2 /* 200
x = 111
println(y) /*還是為200
println(x) /* 111
println(y) /*還是為200 變數函數:
func hello(name:String, word:String, time:Int) -> String {
return "\(name) says \(word) at \(time) oclock."
}
var good1: (String, String, Int)->String
good1 = hello
good1("John", "How are you?", 12)
var good2: (String, String, Int) -> String
good2 = good1
good2("Tome","Good day!", 9)
將第一個變數的值指給第二個變數一樣有效。
傳回函數的函數(比較複雜)
本帖最後由 return 於 2015-5-27 22:30 編輯func happy() ->String {
return "I am happy now."
}
func angry() ->String {
return "I am angry !"}
func feeling(mood:Int) -> (()->String) { /*可以把()->String視為一個回傳型別,所以可以用()括起來。*/
if mood == 8 {
return happy
}
else {
return angry
}
}
var now = feeling(8) /* now 為一fun(),即是傳happy()給now() */
var mynow = now() /*再將now()的回傳值給mynow,便是答案。 */
var then = feeling(2)
var mythen = then() //不能再用mynow?
closure的一些用法:
一般來說,一個closure是要賦予某個變數或常數之用,該變數或常數假設是 X,本身並不需要事先定義任何型態,就和其他情形一樣。例如
var x = { (name:String, price:Int) ->String in return "\(name) is sold for \(price) dollars." }
前面的X不用事先給予型態。但如果要給也可以,例如:
var y : (String) -> String = { (name:String) -> String in return "hello \(name)" }
而且還可以寫成如下:
var z : (String) -> String = { (name) -> String in return "good morning " + (name) }
但事先給型態有點多此一舉。 var price:Int?
price = 100
if var bookprice = price {
var msg = "You can buy this book for \(price!)" /*或者寫\(bookprice)就不用加 ! 號
} swift的求餘數可用非整數,例如
var x = 9.8
var y = 2.7
9.8 % 2.7 // 1.7 空字串並非「空」nil 陣列 a =
a會出錯,但似乎不能給予nil值?
其它類似 tuple 也都有此問題的樣子? SpriteKit:
Allows Rotation:指定是否允許旋轉。在本例中,你不希望小球旋轉。
Friction:這個屬性也很簡單,在我們的例子中要除去所有的摩擦。
Restitution:是指對象的彈力。其值設置為1意味著,當小球與物體碰撞時將保持原來完整的彈性。簡言之,這意味著:小球會以與最初同等的作用力彈回來。
Linear Damping(線性阻尼):通過減少物體的線性速度來模擬流體或空氣摩擦。在本例遊戲中,小球移動時不應該減速。所以,在上面你需要設置阻尼為0。
Angular Damping(角阻尼):除了角速度外,它與線性阻尼是相同的。當你不允許球旋轉時將此值設置為可選的
頁:
[1]