标签:
// Playground - noun: a place where people can play import UIKit /***********************************************************/ /** * 一. A Swift Tour */ //1.hello world var str = "Hello, playground" println("Hello, world \(str)") //2.返回值为函数的函数 func addOne(number: Int) -> Int{ return 1 + number } func makeIncrementer() -> (Int -> Int){ return addOne } var increment = makeIncrementer() increment(7) //3.参数为函数的函数 func hasAnyMatches(list: [Int], lessThanTen: Int -> Bool) -> Bool{ for item in list{ if lessThanTen(item){ return true } } return false } func lessThanTen(number: Int) -> Bool{ return number < 10 } var numbers = [20, 19, 9, 12] hasAnyMatches(numbers, lessThanTen) //4.函数是一种特殊的闭包,除了大挂号,也可以使用in隔开闭包名和闭包的内容 numbers.map({ (number: Int)-> Int in let result = 3 * number return result }) //4.1 当闭包的类型已知时,闭包可以简写。 numbers.map({ number in 3 * number}) sort(&numbers) { $0 > $1 } /***********************************************************/ /** * 类对象 */ //1.定义一个类 class Sharp: NSObject { var numberOfSides: Int = 0 var name: String init(name: String){//构造方法 self.name = name } func simpleDescription() -> String { return "A sharp with \(numberOfSides) sides" } } //2.继承, init, override, get, set class EquilateralTriangle: Sharp {//等边三角形 var sideLength : Double //3.init方法 init(name: String, sideLength: Double) { self.sideLength = sideLength super.init(name: name) numberOfSides = 3 } //5.get方法和set方法 var perimeter: Double{//周长 get{ return 3 * sideLength } set{ sideLength = newValue / 3.0 } } func area() -> Double{ return sideLength * sideLength } //4.覆盖 override func simpleDescription() -> String { return "A EquilateralTriangle with sides of length \(sideLength)." } } //6. willSet, didSet class Square: Sharp{ var sideLength: Double init(name: String, length: Double) { sideLength = length super.init(name: name) numberOfSides = 4 } override func simpleDescription() -> String { return "A Square with sides of length \(sideLength)." } } class traingleAndSquare: Sharp { var traingle: EquilateralTriangle{ willSet{ square.sideLength = newValue.sideLength } } var square: Square{ willSet{ traingle.sideLength = newValue.sideLength } } init(size: Double, name: String){ square = Square(name: name, length: size) traingle = EquilateralTriangle(name: name, sideLength: size) super.init(name: name) } } //
// Playground - noun: a place where people can play import UIKit var str = "Hello, playground" //定义一个协议 protocol ExampleProtocol { var simpleDescription: String { get } mutating func adjust() } //类、枚举、结构体都可以使用协议 class SimpleClass: ExampleProtocol { var simpleDescription: String = "A very simple class" var anotherProperty: Int = 69105 func adjust() { simpleDescription += " Now 100% adjusted." } } var a = SimpleClass() a.adjust() let simpleDisc = a.simpleDescription //扩展 extension Int: ExampleProtocol { var simpleDescription: String { return "The number \(self)" } mutating func adjust() { self += 42 } } //给Double类型扩展一个绝对值属性 extension Double { var absoluteValue :Double { return self > 0 ? self : -1 * self } } var d: Double = -203.1 println(d.absoluteValue) //范型(Generics) enum OptionalValue<T> {//可选值 case None case Some(T) } var possibleInt: OptionalValue<Int> = .None//OptionalValue.None possibleInt = .Some(100)//OptionalValue.Some(100)
标签:
原文地址:http://www.cnblogs.com/actionke/p/4192643.html