Swift的笔记和工具类

Create Class 创建类 (重载效果)

// Create Class 创建类
class MyClass {

    // Properties 成员变量

    init() {
        // Constructor 构造函数
    }

    // Method 成员方法
    func doIt() {
        println("doIt")
    }

    func doIt() -> Int {
        return 0
    }

    func doIt(a:Int) -> Int {
        return a
    }

    func doIt(a:Int, b:Int) -> Int {
        return a + b
    }

    func doIt() -> String {
        return ""
    }

    func doIt(a:String) -> String {
        return a
    }

    func doIt(a:String, b:String) -> String {
        return a + b
    }

}

// Create / Using an Instance 创建 / 使用 一个实例
var a = MyClass()
a.doIt("Wang ", b: "Zhipeng")

Enums 枚举

// Enums 枚举
enum ComcSoftType: Int {

    case DevelopmentEngineer = 1

    case TestEngineer = 2

}

var myType = ComcSoftType.DevelopmentEngineer

Declaring Variables 变量的声明 (可选变量)

// Declaring Variables 变量的声明
var mutableDouble:Double = 1.0
mutableDouble = 2.0

let constantDouble:Double = 1.0
//constantDouble = 2.0 Error 错误

var autoDouble = 1.0

// Optional Value 可选变量 (新机制)
var optionDouble:Double? //此刻 optionDouble 根本没有分配内存,对其取地址: &optionDouble 为NULL
optionDouble = 1.0 //这时候开始 optionDouble 才会开始分配内存

if let defineDouble = optionDouble {
    println("已经分配内存")
}
else {
    println("没有分配内存")
}

Control Flow 控制流

// Control Flow 控制流
var condition = true
if condition {
    println("正确")
}
else {
    println("错误")
}

var val = "Four"
switch val {
    case "One":
        "One"
    case "Two", "Three":
        "Two, Three"
    default:
        "default"
}

// omits upper value, use ... to include  省略了上限值,使用 ... 包括
for i in 0..3 {
    println("i = \(i)")
}

for var j = 0; j < 3; ++j {
    println("j = \(j)")
}

// While
var n = 2
while n < 100 {
    n = n * 2
}
println(n)

var m = 2
do {
    m = m * 2
} while m < 100
println(m)

String Quick Examples 字符串的例子

// String Quick Examples 字符串的例子
var firstName = "Zhipeng"
var lastName = "Wang"
var helloString = "Hello, \(lastName) \(firstName)"

var tipString = "2499"
var tipInt = tipString.toInt()

extension Double {
    init (string:String) {
        self = Double(string.bridgeToObjectiveC().doubleValue)
    }
}
tipString = "24.99"
var tipDouble = Double(string:tipString)

Array Quick Examples 数组的例子

// Array Quick Examples 数组的例子
var person1 = "One"
var person2 = "Two"
var array:String[] = [person1, person2]
array += "Three"
for person in array {
    println("person: \(person)")
}
var personTwo = array[1]
println("personTwo: \(personTwo)")

Dictionary Quick Examples 字典的例子 (泛型效果)

// Dictionary Quick Examples 字典的例子
var dic:Dictionary<String, String> = ["One": "1",
                                     "Two": "2",
                                     "Three": "3"]
dic["Three"] = "4" // Update Three
dic["One"] = nil // Delete One
for(key, value) in dic {
    println("key: \(key), value: \(value)")
}

Function 函数

// Function 函数
func getPirces() -> (Double, Double, Double) {
    return (1.1, 1.2, 1.3) // tuple 元组
}
// 取出元组
var (one, two, three) = getPirces()
println("One = \(one), Two = \(two), Three = \(three)")

func getSum(numbers:Int...) -> Int {
    var sum = 0
    for number in numbers {
        sum += number
    }
    return sum
}
getSum()
getSum(1, 3, 5, 7, 9)

函数嵌套

// 函数嵌套
func nestedFunction() -> Int {
    var x = 0
    //
    func add() {
        x += 1
    }
    //
    add()
    return x
}

函数传递

// 函数传递
func makeIncrementer() -> (Int -> Int) {
    func addOne(number:Int) -> Int {
        return number + 1
    }
    return addOne
}

var increment = makeIncrementer()
increment(1)

func makeIncrementer2() -> ((String, String) -> String) {
    func and(a:String, b:String) -> String {
        return a + b
    }
    return and
}
var increment2 = makeIncrementer2()
increment2("Wang ", "zhieng")

func lessThanOne(number:Int) -> Bool {
    return number < 1
}
func makeIncrementer3(list:Int[], condition:Int -> Bool) -> Bool {
    for number in list {
        if condition(number) {
            return true
        }
    }
    return false
}
makeIncrementer3([1,2,3,4,5], lessThanOne)

Extends 继承 (多态效果)

// Extends 继承 (多态效果)
println("======================= Extends 继承")
class People {
    // Eat 吃
    func eat() {
        println("吃")
    }
    // Sleep 睡
    func sleep() {
        println("睡")
    }
    // Work 工作
    func work() {
        println("工作")
    }
    // Said 说
    func said() {
        println("我是人")
    }
}

class Chinese:People {
    // Said 说
    override func said() {
        println("我是中国人")
    }
}

class Americans:People {
    // Said 说
    override func said() {
        println("我是美国人")
    }
}

class Alien {
    // Eat 吃
    func unknown() {
        println("外星人")
    }
}

// 不支持多继承
//class futureGenerations:Chinese, Americans { // Multiple inheritance from classes ‘Chinese‘ and ‘Americans‘
//    // Said 说
//    override func said() {
//        println("我是中国人和美国人的后代")
//    }
//}

// 多态 必要条件:1.继承 2.重写 3.父类引用指向子类对象
var people = People()
people.said()
people = Chinese()
people.said()
people = Americans()
people.said()
//people = Alien() Error ‘Alien‘ is not convertible to ‘People‘
//people.said()

var chinese = Chinese()
chinese.said()

var americans = Americans()
americans.said()

时间: 2024-10-09 08:03:34

Swift的笔记和工具类的相关文章

非专业码农 JAVA学习笔记 6java工具类和算法-string

续<非专业码农 JAVA学习笔记 5 java工具类和算法> 五.字符串string 字符串和字符的差别:字符串双引号括起来”n”,字符用单引号括起来,表示一种符号’\n’ 1.string的主要方法和属性 类 方法或者属性 备注 定义string Stirng s=new string(“值”),string s=”值” 属性 string.length:string的长度为字节 方法startswith,endswith s.startwith(“值”)-以值为开头,s.endswith(

Java基础笔记——集合工具类

1 package collections_show; 2 /* 3 * 操作集合Collection的工具类Collections 4 * 说明: 5 Collections 是一个操作 Set.List 和 Map 等集合的工具类 6 Collections 中提供了一系列静态的方法对集合元素进行排序.查询和修改等操作,还提供了对集合对象设置不可变.对集合对象实现同步控制等方法 7 8 排序操作:(均为static方法) 都是List 9 ---> reverse(List):反转 List

Swift:简单封装一个工具类模板

创建模板类(封装一个类)新建一个名字叫做 Product 的类 Product.swift File 的内容 class Product { var name: String var description: String var price: Double var stock: Int init(name: String, description: String, price: Double, stock: Int) { self.name = name self.description =

网上图书商城项目学习笔记-037工具类之BaseServlet及统一中文编码

1.统一中文编码分析 tomcat默认esetISO-8859-1编码,在servlet中,可能通过request的setCharacterEncoding(charset)和response.setContentType("text/html;charset=UTF-8");处理post请求编码,但get请求的编码控制不了,所以,如果请求类型是get,则用装饰者模式把request整个调包 2.EncodingFilter.java 1 package cn.itcast.filte

网上图书商城项目学习笔记-035工具类之JdbcUtils及TxQueryRunner及C3P0配置

事务就是保证多个操作在同一个connection,TxQueryRunner通过JdbcUtils获取连接,而JdbcUtils通过ThreadLocal<Connection>确保了不同线程设置的con不会混淆(tl.set(con)),而同一线程的connecion可以共用,从而具有事务的功能 1.JdbcUtils.java 1 package cn.itcast.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.SQLExc

swift学习笔记(四)关于类的继承

在swift中,继承是区分类与其它对象的基本特征 继承后的子类能够重写父类的方法,包含类方法和实例方法,属性和附属脚本(subscript) 在继承过程中,构造器方法init()是不被继承的,须要显示标明 class Tandem: Bicycle { init() { super.init() maxPassengers = 2 }  } 子类仅仅能够改动从父类继承来的变量属性,而不能够改动常量let属性 关于重写override 重写方法:能够通过super.function来重写父类的方法

Swift学习笔记九:类 Class

构造函数 非 Optional 属性, 都必须在构造函数中设置初始值, 从而保证对象在实例化的时候, 属性都能被正确的初始化 构造函数的目的: 给自己的属性分配空间并且设置初始值 在调用父类的构造函数之前, 必须保证本类的属性都已经完成初始化 调用父类的构造函数, 给父类的属性分配空间并且设置初始值 如果重载了构造函数, 并且没有重写父类的 init 方法,系统不再提供 init 构造函数(默认是会有的), 因为默认的构造函数, 不能给本类的属性分配空间 // Person 类没有 '初始化器'

Google Guava学习笔记——基础工具类Preconditions类的使用

Preconditions类是一组静态方法用来验证我们代码的状态.Preconditons类很重要,它能保证我们的代码按照我们期望的执行,如果不是我们期望的,我们会立即得到反馈是哪里出来问题,现在我们使用Preconditions来保证我们代码的行为,并且对调试也非常方便. 当然,你也可以自己写预处理的代码,就像下面一样: if (someObj == null) { throw new IllegalArgumentException(" someObj must not be null&qu

Google Guava学习笔记——基础工具类String处理类的使用

不管你喜欢何种编程语言,很多时候针对string编程的处理都是乏味而且爱出错误的,很多时候,我们需要从文件或是数据库中读取数据,或者根据需求重新格式化或排序字符串给用户显示.幸运的是,Guava提供了一些非常有用的类,来很容易的处理String的问题,这些类有: CharMatcher Charsets Strings 使用Charsets类 在Java平台,Java支持6种标准字符集,它经常出现在下面的代码中: byte[] bytes = someString.getBytes(); 但上面