第一次接触 playground
2016-07-24 17:25
363 查看
(1)ControlFlow
(2)EnumAndStruct
(3)ProtocolAndExtensions
(4)SimpleValue
(5)ObjectAndClass
(6)FunctionAndClosure
//: Playground - noun: a place where people can play import UIKit var str = "Hello, playground" // if let scores = [75,44,33,66,12] var passNum = 0 for score in scores { if score > 60 { passNum += 1 } } "有\(passNum)个人及格" //Switch let feeling = "☺️" switch feeling{ case "��": "我很生气" case "☺️": "我很开心" case "��": "我很悲伤" default: "没有感觉" } // for in let studentsScores = ["夏明":[66,67,56,44],"小红":[8,99,86,84],"小张":[100,59,77,66]] var largestScore = 0 for (name,scores) in studentsScores { for score in scores { if score > largestScore { largestScore = score } } } "最大的分数是" + largestScore.description // while var sum = 1 while sum < 100 { sum *= 2 } sum // ... 和 ..< sum = 1 for i in 0...6 { sum *= 2 } sum sum = 1 for i in 0..<6 { sum *= 2 } sum
(2)EnumAndStruct
//: Playground - noun: a place where people can play import UIKit enum Rank: Int { case Ace = 1 case Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten case Jack,Queen,King func simpleDescrption() -> String { switch self { case .Ace: return "ace" case .Jack: return "jack" case .Queen: return "queen" case .King: return "king" default: return rawValue.description } } } var ace = Rank.Three ace.simpleDescrption() if let rank = Rank(rawValue: 50) { rank.simpleDescrption() } else { "没有此原始值的Rank" } // 枚举,结构体(值类型的) vs 类(引用类型的) class MyClass { var name: String init(name: String){ self.name = name } } let oldClass = MyClass(name: "oldClass") let newClass = oldClass newClass.name = "NewClass" oldClass.name struct MyStruct { var name: String } let oldStruct = MyStruct(name: "OldStruct") var newStruct = oldStruct //指向的是不同的地址 newStruct.name = "NewStruct" oldStruct.name
(3)ProtocolAndExtensions
//: Playground - noun: a place where people can play import UIKit protocol Person { var name: String { get set } func think() func work() } class Xiaoming: Person { var name = "小明" func think() { "想念着小红" } func work() { "写代码" } } // extension 类,结构体,枚举添加方法,计算性属性,下标,构造器 extension Int { func absoluteValue() -> Int { return labs(self) } } (-3).absoluteValue() // 泛型函数 func repeatItem<Item>(item:Item, numberOfTimes:Int) -> [Item] { var result = [Item]() for _ in 0..<numberOfTimes { result.append(item) } return result } repeatItem(5, numberOfTimes: 3) repeatItem("ss", numberOfTimes: 3) // 泛型类型(类、结构体、枚举) enum OptionValue<ValueType> { case None case Some(ValueType) } var optInt = OptionValue.Some("555")
(4)SimpleValue
//: Playground - noun: a place where people can play import UIKit // let 和 var var myVar = 42 myVar = 50 let myLet = 42 // 值的类型转换 let implicitInt = 70 let implicitDouble = 70.0 let explicitDouble: Int = 70 let name = "小明" let age = 7 name + "年龄是" + String(age) + "岁" name + "年龄是" + age.description + "岁" // 字符串插值 let apples = 3 let oranges = 5 let appleSummary = "我有\(apples)个苹果" let fruits = "我有\(apples + oranges)个水果" // 数组和字典 var goodsArray = ["西红柿","鸡蛋","苹果","香蕉"] goodsArray[1] = "马铃薯" goodsArray var studentsDictionary = ["小明":7,"小红":6,"小张":5] studentsDictionary["小红"] = 9 studentsDictionary goodsArray = [] studentsDictionary = [:] let emptyArray = [String]() let emptyDictionary = [String:Int]()
(5)ObjectAndClass
//: Playground - noun: a place where people can play import UIKit // 类的属性和方法 class Shape { var name: String var numberOfSides: Int init(name:String, numberOfSides:Int){ self.name = name self.numberOfSides = numberOfSides } func simpleDescription() -> String { return "\(name)有\(numberOfSides)边" } } var shape = Shape(name: "三角形", numberOfSides: 3) shape.simpleDescription() // 子类 class Square: Shape { var sideLength: Double init(sideLength: Double){ self.sideLength = sideLength super.init(name: "正方形", numberOfSides: 4) } func area() -> Double { return sideLength * sideLength } var perimeter: Double { // 计算性属性,周长 get { return sideLength * Double(numberOfSides) } set { sideLength = perimeter / Double(numberOfSides) } } override func simpleDescription() -> String { return super.simpleDescription() + ", 同时该正方形的边长为\(sideLength)" } } var square = Square(sideLength: 40) square.simpleDescription() "该正方形的面积是\(square.area())"
(6)FunctionAndClosure
//: Playground - noun: a place where people can play import UIKit // 函数的格式 func green(name:String, day:String) -> String { return "\(name)你好,今天是\(day)" } green("小明",day:"星期日") green("小红", day: "星期一") // 元组在函数中使用,返回一个元组 func calcuate(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) } calcuate([5,30,88,10,44,43]) // 可选参数 func sumOf(numbers:Int...) -> Int { var sum = 0 for number in numbers { sum += number } return sum } sumOf(5,4,3,2,1) // 闭包和闭包的缩写 var numbers = [6,3,7,4,5] numbers = numbers.map({ (number) -> Int in return number * 3 }) numbers // 闭包的简写方式 numbers = numbers.map { number in number * 3 } numbers = numbers.map { $0 * 3 }
相关文章推荐
- IO
- 递归,yield,参数槽
- 浅析Java匿名内部类在Android事件响应中的应用
- POJ 1318 字典排序
- php 自动加载类方法小结
- 深入理解Java的接口和抽象类
- No.001 Two Sum
- 《大话数据结构》读书笔记
- poj1182 并查集
- 树的面试题(一):二叉树的镜像
- Java三大框架之struts的验证框架(验证字段)
- Observer观察者模式
- ORACLE数据库---多表链接查询
- debian彻底卸载软件
- invalidate()和postInvalidate() 的区别
- Android Device Administration 设备管理器——实现一键锁屏
- 287. Find the Duplicate Number
- [php]include()和require()区别【学习笔记】
- Failed to load the LayoutLib: com/android/layoutlib/bridge/Bridge : Unsupported major.minor version
- HDU1251统计难题 trie树