此篇是为了以后查资料方便,推荐学习的时候照着 The Swift Programming Language 中 tutorial章节敲一遍代码,对照描述理解透彻。新建工程推荐playground,可以直接看到结果
// Playground - noun: a place where people can play
import UIKit
var str = "Hello, playground"
let myConstant:Float = 4
let label = "The width is "
let width = 94
let widthLable = "\(label) + \(width)"
var shopingList = []
var testDict = [:]
var timeTodo = ["myKey":"myValue"]
let individualScres = [12,45,52,86,76]
var teamScore = 0
for score in individualScres{
if score>50{
teamScore += 3
}else{
teamScore += 1
}
}
teamScore
// "?" stands either that type value or nil
var optionalString: Int? = 32
optionalString = 56
if let name = optionalString{
println(name)
}else{
println("is nil")
}
// switch support anykind of data and and wide wariety of comparison operations
// every case has add a break default
// let use for match the value
let vegetable = "red peper"
switch vegetable{
case "peper":
let vegetableComment = "Add some raisins and make ant on a log"
case "red pepper","waterCress":
let vegetableComment = "hehe"
case let x where x.hasSuffix("peper"):
let vegetableComment = "I am here"
default:
let vegetableComment = "EveryThing tastes good in soup"
}
let interestingNumbers = [
"prime":[2,3,5,7,11,13],
"Fibonacci":[1,1,58,65],
"Square":[1,4,9,16,25],
]
var largest = 0
for (kind,numbers) in interestingNumbers{
for number in numbers{
if number>largest{
largest = number
}
}
}
largest
var n = 2
while n<100{
n = n * 2
}
n
var m = 2
do {
m = m*m
}while(m<200)
m
// 0 stand for i=0
var firstForLoop = 5
for i in 0..<7 {
firstForLoop += i
}
firstForLoop
func greet(name: String, age:Float) -> String {
return "Hello,\(name):\(age)"
}
greet("aiden", 20)
// ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^//
// use closures as return value
func calculateStatistics(scores:[Int]) -> (min:Int, max:Int,sum:Int){
var min = scores[0]
var max = scores[0]
var sum = 0
for score in scores{
if score > max {
max = score
} else if score < min {
min = score
}
sum += score
}
return (min,max,sum)
}
let result = calculateStatistics([123,54,1,56])
result.max
result.min
result.sum
// take arguments from another function, somelike method factory
func makeIncrementer() -> (Int -> Int){
func addOne (number: Int) -> Int {
return 1 + number
}
return addOne
}
var increment = makeIncrementer()
increment(98)
// function as an argument
func lessThenTen (number:Int )-> Bool{
return number < 10
}
func hasAnyMatches(list:[Int],condition:Int -> Bool)->[Int]{
var lessTen:[Int] = []
for number in list{
if condition(number){
lessTen.insert(number, atIndex: 0)
}
}
return lessTen
}
var numbers = [20,25,3,7,1,3,5,6,8,9];
hasAnyMatches(numbers, lessThenTen)
// (number:Int) -> Int is arguments and return type, "in" seperate it and function body
// map & sort is nsarray method
numbers.map({
(number:Int) -> Int in
let result = 3 * number
return result
})
let mappedNumbers = numbers.map({number in 3*number})
mappedNumbers
let sortedNumbers = sorted(mappedNumbers){$0 > $1}
sortedNumbers