|
|
Line 1: |
Line 1: |
− | <pre brush:c>
| + | [[Swift Introduction|Swift Introduction]] |
− | swift note:
| + | |
− | Basic
| + | |
− | Var
| + | |
− | var languageName: String = "Swift"
| + | |
− | Constant
| + | |
− | let version: Double = 1.0
| + | |
− | :Int, :Bool
| + | |
− | | + | |
− | let components = "~/Documents/Swift".pathComponents
| + | |
− | ["~", "Documents", "Swift"]
| + | |
− | | + | |
− | let a = 3, b = 5
| + | |
− | let res = "\(a) times \(b) is \(a * b)"
| + | |
− | | + | |
− | let dog = "dog"
| + | |
− | var dog1 = dog + "1"
| + | |
− | let a: Character = "a"
| + | |
− | let b: Character = "b"
| + | |
− | let ab = a + b
| + | |
− | | + | |
− | Array
| + | |
− | var names = ["Anna", "Alex", 42]
| + | |
− | var names: String[] = ["Anna", "Alex"]
| + | |
− | var numOfLegs = ["ant": 6, "snake": 0]
| + | |
− | for x in names {
| + | |
− |
| + | |
− | }
| + | |
− | for number in 1...5 {
| + | |
− | | + | |
− | }
| + | |
− | for num in 0..<5 { //half close range
| + | |
− | | + | |
− | }
| + | |
− | for (name, legs) in numOfLegs {
| + | |
− | | + | |
− | }
| + | |
− | names += "Sam"
| + | |
− | names += ["Hao", "Dan"]
| + | |
− | names[0] = "x"
| + | |
− | names[3...5] = ["x", "y", "z"]
| + | |
− | numOfLegs["spider"] = 273
| + | |
− | numOfLegs["spider"] = 8
| + | |
− | Optionals
| + | |
− | let possibleLegs: Int? = numOfLegs["aardvark"] //either get integer or nothing
| + | |
− | if possibleLegs == nil {
| + | |
− | | + | |
− | } else {
| + | |
− | let legCount = possibleLegs! //forcing optional value to it's type
| + | |
− | }
| + | |
− | //A Simpler way
| + | |
− | if let legCount = possibleLegs {
| + | |
− | | + | |
− | }
| + | |
− | Switch legCount {
| + | |
− | case 0: //no break
| + | |
− | case 1:
| + | |
− | case ExecButton: //match object
| + | |
− | case 1...5:
| + | |
− | case 2,4,6,8:
| + | |
− | default: //required
| + | |
− | }
| + | |
− | func sayHello(name:String = "default") { //give a default value
| + | |
− | | + | |
− | }
| + | |
− | Tuples
| + | |
− | (404, "Not found")
| + | |
− | (2, "Banana", 0.42)
| + | |
− | let (statusCode, message) = refresh()
| + | |
− | Closures
| + | |
− | func repeat(count: Int, task: () -> ()) {
| + | |
− | for i in 0..<count {
| + | |
− | task()
| + | |
− | }
| + | |
− | }
| + | |
− | repeat(2, {
| + | |
− | println("hello")
| + | |
− | })
| + | |
− | repeat(2) {
| + | |
− | println("hello")
| + | |
− | }
| + | |
− | Class
| + | |
− | class Vehicle {
| + | |
− | var numOfWheels = 0 //stored properties
| + | |
− | var description: String { //computed properties, has to be var
| + | |
− | get { //get is optional
| + | |
− | return "\(numOfWheels) wheels"
| + | |
− | }
| + | |
− | }
| + | |
− | }
| + | |
− | let someVehicle = Vehicle() //Auto alloc
| + | |
− | //inheritance
| + | |
− | class Bicycle: Vehicle {
| + | |
− | init() { //initializer
| + | |
− | super:init()
| + | |
− | numOfWheels = 2
| + | |
− | }
| + | |
− | override var speed: Double {
| + | |
− | willSet {
| + | |
− | if newValue > 65.0 {
| + | |
− | println('warning too fast')
| + | |
− | }
| + | |
− | }
| + | |
− | didSet {
| + | |
− | //oldValue available
| + | |
− | }
| + | |
− | }
| + | |
− | }
| + | |
− | struct Rect {
| + | |
− | var origin: Point
| + | |
− | var size: Size
| + | |
− | var area: Double {
| + | |
− | return size.width * size.height
| + | |
− | }
| + | |
− | func isBiggerThanRect(other: Rect) => Bool {
| + | |
− | return self.area > other.area
| + | |
− | }
| + | |
− | }
| + | |
− | struct and class
| + | |
− | 1. struct cannot inherite
| + | |
− | 2. class is passed by reference. struct is passed by value
| + | |
− | Constant and Variables
| + | |
− | let window = Window(1.0, 1.0)
| + | |
− | //The reference is a constant, cannot change the reference value
| + | |
− | can do window.x = 1.0
| + | |
− | cannot do window = Window(2.0, 2.0)
| + | |
− | | + | |
− | var point1 = Point(x: 0.0, y: 0.0) //Point is struct. can do point1.x = 1.0
| + | |
− | let point2 = Point(x: 0.0, y: 0.0) // cannot do point2.x = 1.0
| + | |
− | | + | |
− | </pre>
| + | |