swift 导读

// 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)
				
时间: 2024-12-18 11:45:47

swift 导读的相关文章

精华阅读第 12 期 | 最新 App Store 审核指南与10大被拒理由?

很多时候,我们对技术的追求是没有止境的,我们需要不断的学习,进步,再学习,再进步!本文系移动精英开发俱乐部的第12期文章推荐阅读整理,其中涉及到了 Android 数据库框架,架构设计中的循环引用,同时还阐述了如何在iOS中实现抽象类,以及什么是集群和分布式.同时,本文还分享了阿里巴巴的实践分享,如果你在开发一款APP,你也可以读一下<最新 App Store 审核指南与10大被拒理由?>.希望这些文章能对大家有所启发.文章系 ITOM 管理平台 OneAPM 审校整理: 1,Find Con

iOS开发笔记--43个在GitHub上的优秀Swift开源项目推荐

43个在GitHub上的优秀Swift开源项目推荐 原文:http://www.php100.com/html/it/biancheng/2015/0112/8329.html [导读] 拥有着苹果先天生态优势的Swift自发布以来,各种优秀的开源项目便层出不穷.本文作者站在个人的角度,将2014年Swift开源项目做了一个甄别.筛选,从工具.存储.网络.界面.框架到Demo以及完整应用等,满满的干 拥有着苹果先天生态优势的Swift自发布以来,各种优秀的开源项目便层出不穷.本文作者站在个人的角

Apple Swift编程语言新手教程

Apple Swift编程语言新手教程 作者: 日期: gashero 2014-06-03 FROM:http://gashero.iteye.com/blog/2075324 文件夹 1   简单介绍 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 7   枚举与结构 1   简单介绍 今天凌晨Apple刚刚公布了Swift编程语言,本文从其公布的书籍<The Swift Programming Language>中摘录和提取而成.希望对各位的

swift 深入理解Swift的闭包

我们可用swift的闭包来定义变量的值. 先来一个简单的例子大家先感受感受. 定义一个字符串的变量的方法: 直接赋值 var str="JobDeer" 还可以用闭包的方式定义: var str:String={ return "JobDeer" }() 闭包还可以这么定义,省略了等号和括号: var str:String{ return "JobDeer" } 闭包中可以定义get方法. var str:String{ get{ return

在Swift结构体中如何实现写时复制?

结构体(Struct)在Swift语言中占有重要地位,在Swift标准库中,大约有90%的公开类型都是结构体,包括我们常用的Array.String.Dictionary.结构体相比类,一个最重要的特性就是它是值类型,而类似引用类型.值类型是通过复制值来赋值的,而不是引用同一个内存地址,这样就不存在数据共享的问题,能防止意外的数据改变,并且它是线程安全的. 举一个很简单的例子,在objc中,数组是类,是引用类型,在Swift中,数组是结构体,是值类型.因此下面的代码中: let array1 =

Swift学习之位移枚举的按位或运算

在OC里面我们经常遇到一些枚举值可以多选的,需要用或运算来把这些枚举值链接起来,这样的我们称为位移枚举,但是在swift语言里面却不能这么做,下面来讲解一下如何在swift里面使用 OC的位移枚举的区分 //位移枚举typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) { UIViewAutoresizingNone = 0, UIViewAutoresizingFlexibleLeftMargin = 1 << 0, UIViewAutores

Swift - 用UIScrollView实现视差动画效果

效果 源码 https://github.com/YouXianMing/Swift-Animations // // MoreInfoView.swift // Swift-Animations // // Created by YouXianMing on 16/8/18. // Copyright © 2016年 YouXianMing. All rights reserved. // import UIKit class MoreInfoView: UIView { var imageV

Swift 入门之简单语法(一)

定义 let 定义常量,一经赋值不允许再修改 var 定义变量,赋值之后仍然可以修改 //: # 常量 //: 定义常量并且直接设置数值 let x = 20 //: 常量数值一经设置,不能修改,以下代码会报错 // x = 30 //: 使用 `: 类型`,仅仅只定义类型,而没有设置数值 let x1: Int //: 常量有一次设置数值的机会,以下代码没有问题,因为 x1 还没有被设置数值 x1 = 30 //: 一旦设置了数值之后,则不能再次修改,以下代码会报错,因为 x1 已经被设置了数

Swift和Java关于字符串和字符的比较

1. 字符串字面量 Swift和Java关于字符串操作大同小异. Swift:字符串字面量(String Literals):我们可以在代码中包含一段预定义的字符串值作为字符串字面量. 字符串字面量是由双引号 ("") 包裹着的具有固定顺序的文本字符集.字符串字面量可以用于为常量和变量提供初始值. 代码如下: let someString = "Some string literal value" 字符串字面量可以包含以下特殊字符: 转义字符\0(空字符).\\(反