代码加注释,30分钟大概浏览下swift 的基本语法
/*能用常量的尽量用常量,能自动判别类型的就让它自动判别,可提高可读性*/let message = "Hello World" // 用let定义常量var score = 30 // 用var定义变量,自动判断类型let num: Int = 20 // 指定常量类型为Intlet priceInferred = 19.99 //带小数的数字默认为Double 类型let priceExplicit: Double = 19.99 //Double 类型let price: float = 19.99 //float 类型let flag: Bool = true // Bool 类型let arr : [Double] = [1.2,2.3,4.3] // 数组let arr2 = [2,5,6,3] // 数组let arr3 = 0..<10 // 范围let arr4 = ("hello",2,5) // 元组,可以是不同的数据类型let dict : [String: Int] = [ "key1": 3,"key2": 4,"key3": 5] //字典,相当于maplet val1 = Int(dict["key1"]!)// 值永远不会被隐式转换为其他类型。如果你需要把一个值转换成其他类型,请显式转换var p : Double = Double(price)for i in arr { // for-in 循环 println("element: \(i)")}for i in 0...2 { // 0..<2不包含2,0...2包含2 println("element: \(i)")}for (key,value) in dict { println("key is \(key),value is \(value)")}var n = 2while n < 2 { n = n * 2}do { n = n * 2} while n < 5if price < 40 { println("price is \(price)") // 在字符串中使用\()来解析变量,函数等等} else if price > 50 && price < 80 { println("score is \(score)");} else { println("score is \(score)")}// 一个可选的值可能是一个具体的值或者是nillet optStr : String? = "hello"// 在if语句中,条件必须是一个布尔表达式,你可以一起使用if和let来处理是否为nil//如果变量的可选值是nil,条件会判断为false,大括号中的代码会被跳过。//如果不是nil,会将值赋给let后面的常量if let flag = optStr { println(flag)}// 运行switch中匹配到的子句之后,程序会退出,不需要breaklet animal = "wild dog"switch animal {case "bird": "bird"case "mouse","cat": "mouse or cat"case let pet where pet.hasSuffix("dog"): "dog"default: "pet"}func greet (name : String) -> String { return "hello \(name)"}//返回元组func getNumber () -> (Double,Double,String) { return (2.3,4.5,"hello")}// 不定参数func sumNumber(num : Int...) -> Int { var sum = 0 for n in num { sum += n } return sum}// 闭包func addExtraFive(n : Int) -> Int{ var x = 5 func add() { x += n } add() return x;}let y = addExtraFive(10)//传入函数func compare(n1:Int,n2:Int,equal: (Int,Int) -> Int) -> Int { return equal(n1,n2)}func makeFunc(n : Int) -> (Int -> Int) { func addNumber(n : Int) -> Int{ return 1 + n } return addNumber}//匿名函数参数compare(1,{(number:Int,num2 : Int)-> Int in let result = 3 * number return result})//当一个函数作为最后一个参数传给一个函数的时候,它可以直接跟在括号后面compare(1,3) {(number:Int,num2 : Int)-> Int in let result = 3 * number return result}class A { // 定义类A func calc(n1:Int,n2:Int) -> Int{ return n1 + n2 }}class B : A { //定义类B,继承类A var seconds: Double = 0.0 //声明成员属性必须要初始化 var score : Int //使用init函数来初始化 var price : Double? //声明optional的成员属性不需要初始化 var mount : Int = 0{ dIDSet { // after set a new vale println("mount changed from \(oldValue) to \(self.mount)") } willSet { // before set a new value println("before change mount from \(self.mount) to \(newValue)") } } //定义 被计算的属性(computed property). - do not have storage in the instance //setter方法没有将被设置的值定义一个名称,将会默认地使用newValue这个名称来代替 var minutes : Double{ set { self.seconds = newValue * 60 } get { return seconds / 60 } } init(score : Int) { //构造函数 self.score = score //用self指定本对象 } /*重写父类方法*/ overrIDe func calc(n1:Int,n2:Int) -> Int { return n1 + n2 } }let objB = B(score: 30) //创建B对象objB.calc(32,n2: 34)// 枚举enum Day { case Monday,Tuesday,Wednesday,Thursday,FrIDay case Saturday,Sunday func print() { switch self { case .Monday,.Thursday,.Wednesday,.FrIDay: println("workday") case .Saturday,.Sunday: println("weekend") default: println("unkown") } self }}enum Constant { case Result(String)}var rs = Constant.Result("success")// 结构体,结构体是传值,类是传引用struct DayType { var day : Day var name : String}var type = DayType(day: Day.Monday,name: "workday")// 接口protocol Person { func speak()}class Chinese : Person { func speak() { println("speak Chinese") }}// 泛型func execute<T> (s : T ) { println(s)}class Calculator<T> { func toString(t1 : T,t2 : T) -> String { return "\(t1) \(t2)" }}总结
以上是内存溢出为你收集整理的swift 15 分钟全部内容,希望文章能够帮你解决swift 15 分钟所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)