zoukankan      html  css  js  c++  java
  • Swift 学习 基础<一>

    // Playground - noun: a place where people can play
    
    import UIKit
    
    var str = "Hello, playground"
    print("A"); print("A") // 如果同一行有有段代码用 ';'隔开
    // 默认自带换行符
    println("Alice"); println("Peter"); println("Tommy")
    
    //------------------------------基本数据类型-------------------------------------
    
    // 类型推断
    let a = 10
    var b = 20
    print(a+b)
    
    // 关于整型,在32位系统自动推断Int32, 64位-->Int64
    let maxNumberOfStudent = 50
    var currentStudent: Int // 如果不给初值,必须要指定类型  在使用前必须给定初值(安全性的体现)
    currentStudent = 50
    currentStudent++
    currentStudent
    
    
    var score = 90.2 // 浮点型默认Double类型
    var score2: Float = 90.2 // 精度低 在底层转换的时候,有偏差
    var scoreSum = score + Double(score2) // 拒绝隐式转换,必须转成相同类型 转化规则 : Type (value)
    
    //------------------------------字符串类型-------------------------------------
    let name = "Alice"
    let char: Character = "m" // 默认生成字符串类型, 如果需要字符型,手动指定
    
    let School = "school"
    let Class = "classA"
    let ourClass = loSchool + loClass // 拼接字符串, +重载运算符(来源于c++)
    let class_A = "A"
    
    let 范冰冰 = "班长" // Swift 支持Unicode编码,所以可以支持中文
    let  = "love"
    
    
    //------------------------------数组类型-------------------------------------
    
    // Swift 数组只能存储同一类型的数据 (实际上是可以存放不同类型的数据)
    var array = [1,2,3]
    let array2: [Int] = [1,2,3] // 指定类型 [value类型]
    let array3: Array<Int> = [1,2,3]
    let array4 = ["a","b","c"]
    
    // 增加
    array.insert(1, atIndex: 0)
    array + array2
    array.append(5)
    
    // 删除
    array.removeLast()
    
    // 查询
    array[0] = 10
    print(array)
    
    let arr = [11,22,33,44,55,66]
    array += arr
    
    // 区域运算符
    // ...  1....2  从1到2的闭区间
    // ..<  1..< 左闭右开
    arr[1..<2]
    arr[0...2]
    
    //--------------------------字典 (通常称为键值对)-------------------------------
    var dictionary = ["key": 333,"key1": 444]
    var dictionary2: Dictionary<String, Int> = ["key": 000,"key2": 111] // 指定类型
    
    // 查询
    dictionary2["key"]
    // 如果检测到字典中 没有这个键,且我们对起做了赋值操作, 系统就会做插入操作
    dictionary["key3"] = 666
    dictionary
    
    var index = dictionary.indexForKey("key")
    dictionary.removeAtIndex(index!)
    // var any: String = nil  // 这样的赋值方式是不可行的 
    // 所以swift提供了<可选类型>  optional  :?:
    
    var stringO : String? = nil // 在类型后面加 '?' 证明是可选类型,此时可以为nil
    // 底层实现 : 会给该变量进行打包 如果有值的时候 some 修饰  无值时用null修饰
    // 上面 (index!) 的'!'号就是对他进行解包
    
    stringO = "string"
    stringO! += "ff" // !解包 使用的时候需要解包操作
    stringO
    
    stringO?.toInt() // .toInt 方法将stringO转化为int型
    var num: Int? // 当我们有意识  返回值可能为空,就需要将接收者,定义为可选类型
    num = stringO?.toInt()
    
    
    //-------------------------- 元 祖 -------------------------------
    // 用于储存不同类型的数据类型 使用圆括号
    let status = (402,"Not Found")
    status.0
    status.1
    
    let (c,d) = status
    c
    d
    
    var status2: (num: Int, info: String) = status
    var status3: (Int,String) = status // 限定类型
    status2.num
    status2.info
    
    //-------------------------- 分 支 -------------------------------
    // if语句中的条件必须是bool值或者是bool表达式
    
    var isOrNo = true // swift 中的bool只能是true false
    if isOrNo {
        
        println("true")
        
    }
    
    var count: Int? = nil
    count = 20
    
    if let num = count {
        
        println("num = \(num)") // \() 将变量和变量名隔开
        
    }
    
    //-------------------------- 循 环  -------------------------------
    
    var num1 = 0
    while num1 < 10 {
        
        println("num1 = \(num1)")
        num1++
    }
    
    
    var num2 = 10
    var num3 = 20
    
    do {
        num2 + num3
        num2++
        
    } while num2 < 20
        
    
    var num4 = 0
    for num4 = 0 ; num4 < 10 ; num4++
    {
        println("\(num4),num2")
    }
    
    var names = ["fangcheng","chenxuekai","yexinru"]
    for nameStr in names {
        
       println(nameStr)
        
    }
    
    // 默认前面是位置 后面是数组内的value
    // 枚举数组的位置和值,需要加关键字 --- enumerate
    for (index,nameStr) in enumerate(names) {
        
        println(nameStr)
        println(index)
        
    }
    
    // 枚举字典 不用加关键字
    var nameDic = [11: "AAA", 22: "BBB", 33: "CCC"]
    
    for (key,value) in nameDic {
        println("\(key),\(value)")
    }
    
    // _占位符
    for value in nameDic {
        println(value)
    }
    
    // 当我不想要下标 加个站位符
    for (_, value) in nameDic {
        println(value)
    }
    
    for index_1 in names[0...1] {
        println(index_1)
    }
    
    //--------------------------  switch  -------------------------------
    var point = (3, 0)
    switch point {
        case (0, 0):
            println("原点")
        case (_, 0):
            println("x 轴"); fallthrough // 自带break 但我们不需要break的时候,就加这个 fallthrough
        case (0, _):
            println("y 轴")
        case (_, _):
            println("象限内")
    
    }
    
    let point2 = (3, 0)
    switch point2 {
    case (0, 0):
        println("原点")
    case (let x, 0) where x == 4:
        println(x)
    case (0, let y):
        println(y)      // 当下面有声明的变量时,不能fallthrough
    case (let x, let y):
        println("\(x),\(y)")
        fallthrough
    default:
        println("其他")
    }
    
    var number_switch = 20
    switch number_switch {
    case 1...10:
        println("1...10")
    case 11...21:
        println("11...20")
    default:
        println(">21")
    }
    
    for number_switch_enum in 1...100 {
        
        println(number_switch_enum)
        if number_switch_enum == 20 {
            break
        }
    }
    
    var vowel = "aaeifdsoufdsa"
    //  如果想要在打印元音之后, 就跳出循环
    //  在循环前面加一个标记, break + 标记 用于打断循环
    tempName: for vowel_str in vowel {
        switch vowel_str {
            case "a", "e", "i", "o", "u":
            println("元音字母")
            break tempName
        default:
            println("辅音字母")
        }
        
    }
    
    
    
    //---------------------------------------- 冒 泡 ------------------------------------------
    var array_sort = [3,4,1,7,5,0,9,3,8]
    
    for var i = 0 ; i < array_sort.count ; i++
    {
        for var j = 0 ; j < array_sort.count - i - 1; j++
        {
            if array_sort[j] < array_sort[j+1]
            {
                var temp = array_sort[j]
                array_sort[j] = array_sort[j+1]
                array_sort[j+1] = temp
            }
        }
        println(array_sort)
    }
    
    
    
    var array_sort1 = [1,3,6,7,0,10]
    
    for var i = 0; i < array_sort1.count; i++ {
        
        for var j = 0; j < array_sort1.count - i - 1; j++ {
            
            if array_sort1[j] < array_sort1[j+1] {
                
                var temp = array_sort1[j]
                array_sort1[j] = array_sort1[j+1]
                array_sort1[j+1] = temp
            }
            
        }
        println(array_sort1)
    }
    
    array_sort1
  • 相关阅读:
    Redis基本数据类型与持久化
    Jpa创建筛选器自动忽略nul值进行搜索
    layui单元格换行
    form多个name相同表单处理
    layui合并单元格
    关于jpa example使用
    mui下拉菜单
    img在div中居中
    高德地图定位api使用
    【剑指offer】20.表示数值的字符串
  • 原文地址:https://www.cnblogs.com/aaalice/p/4249231.html
Copyright © 2011-2022 走看看