zoukankan      html  css  js  c++  java
  • swift语法100

    1.打印语句 

    print("Hello World") 
    

    2.定义常量和变量

    定义一个字符串常量与变量	
    let constantString: String = "Hello"  // let 常量名称: 字符串类型 = "字符串"
    var varibleString: String = "World"   // var 变量名称: 字符串类型 = "字符串"
    

    3.常量和变量类型会自动推断,使用声明的时候可以省略类型

    let constantInt: Int = 1              // 常见的类型有 Int Double Float String
    var pi = 3.14                         // 编译器会自动推断出pi是Double类型
    

    4.类型必须匹配

    5.输出的语句

    print(constantInt)                    // 1
    print("π的值是:(pi)")                 // 输出:3.1415926.输出字符串时将常量或变量放入()中 
    

    6.类型转换

    let three = 3                         // 按住option,鼠标移动到变量名上,点击可以查看常量类型
    var pointOneFour = 0.14               // 系统自动推断pointOneFour的类型为:Double
    pi = Double(three) + pointOneFour     // 只有类型一直才能操作,转换格式: 类型名(变量或常量)
    let piInt = Int(pi)                   // Double转Int,系统自动忽略小数点后面的数,会损失精度
    

    7.元组

    元组:多个可以是不同类型原色的集合	
    let http404Error = (404, "Not Found") // 类型为:(Int, String),元组中的元素类型可以不同
    let (code, message) = http404Error    // 将元组赋值给一个常量
    print("code:(code), message:(message)") // code:404, message:Not Found
    let (_, ErrorMessage) = http404Error  // _ 可以起到省略的作用,这个在swift中应用很广泛
    print(http404Error.1)                 // Not Found 通过下标访问元素
    let ErrorCode = (requestError:401, 402, 403) // 定义元组的时候可以给单个元素命名
                    
    

    8.可选类型,如果有可能赋值为nil,就必须声明为可选类型

    1. 可选类型: 用来表示有值或没值的两种状态	
    var errorCode: Int? = 404              // 在类型后面添加一个?
    print(errorCode)                       // Optional(404)
    errorCode = nil                        // 对非可选类型赋值为nil会报错
    print(errorCode)                       // nil
    

    9.使用!必须里面不为nil

    3. 使用if语句强制解析,可选类型不能直接使用需要转化	
    if errorCode != nil {                  // 确定可选类型包含值后可以在变量名后加!强制解析
      print(errorCode!)                    // 404
    }
    

    10.可选绑定,将可选类型赋值给一个临时的变量或者常量

    if let code = errorCode {
        print(code)                        // 输出:404, 自动解析
    }else {
    //    print(code)                      // ❌,code是局部变量
        print(errorCode)                   // 如果errorCode = nil此处输出nil
    }
    

    11.隐式解析可选类型:因为一定有值,所以可以免去解析的麻烦

    let assumedString: String! = "A"       // 格式: 可选类型的?改成!
    print(assumedString)                   // A
    if let TempString = assumedString {    // 隐式解析可选类型可以被当做普通可选类型来使用
        print(TempString)                  // A
    }

    12.字符串是否为空

    emptyString2.isEmpty                   // true, 通过isEmpty方法判断是否为空
    

    13.遍历字符串的所有字符

    for char in emptyString1.characters {  // for循环后面会详述
        print(char)                        // 依次输出emptyString1中所有字符
    }
    

    14.获取字符串的长度

    emptyString1.characters.count          // 9, 获取字符串中字符个数包括空格
    

    15.字符串的链接

    var string3 = string1 + string2        // Hello World, 通过"+"将两个字符串相连
    string1.append(" !")                   // Hello World !, 通过append()方法拼接
    let messages = "Hello (string2) !"    // Hello World !, 通过将常量或变量放入()中
    

    16.字符串的截取

    let messChar = messages[messages.startIndex]  // H,通过第一个字符的索引获取字符
    
    let firstIndex = messages.index(after: messages.startIndex)  // 1, 第一个字符的索引
    
    let lastIndex = messages.index(before: messages.endIndex)  // 13, 最后一个字符的索引
    
    let index = messages.index(messages.startIndex, offsetBy: 4)  // 4, 初始位置偏移4
    messages[index]                        // o, 通过索引获得的字符为o
    
    messages[messages.endIndex]            // ❌, 注意:索引不能越界
    

    17.数组的创建

    var arrTitle = [String]()
    

    18.数组的添加

    arrTitle.append("超值出游");
    arrTitle.append("精选门票");
    arrTitle.append("享游港澳");
    

    19.数组的遍历

    for arrItem in twoDouble {             // 通过for in 循环遍历
        print(arrItem)                     // 依次打印每个元素
    }

    for (index, value) in twoDouble.enumerated() {  // 使用迭代器获取数组元素以及索引号
        print("索引:(index), 元素:(value)")  // 依次打印索引号及元素 索引号:0, 元素:3.0 ...
    }   

    20.字典的声明

    var charDict = ["char1":"A", "char2":"B"]  // 系统会作自动类型推断,类型也可以省略
    

    21.字典的添加

    chars["char3"] = "C"  
    

    21.字典的移除

    chars.removeValue(forKey: "char2") 
    

    22.字典的更新

    chars.updateValue("b", forKey: "char2")    // 更新键值对,要是这个键不存在则会添加一个
    

    23.字典的遍历

    for (key, value) in charDict {             // 遍历字典中的所有key value
        print("(key): (value)")              // char2: B 换行 char1: A
    }
    for key in charDict.keys {                 // 遍历字典中的所有key
        print(key)                             // char2 换行 char1
    }
    
    for value in charDict.values {             // 遍历字典中的所有value
        print(value)                           // B 换行 A
    }
    

    24.for循环的操作

    for num in 1...5 {                     // 依次把闭区间[1, 5]中的值赋值给num
        print(num)                         // 依次输出5个数字
    }
    

    25.if/else

    num = 3
    if num == 3 {                          // if后判断语句返回为真,执行后面{}
        print(num)                         // if语句后面的{}不能省略
    }else {                                // if后判断语句返回为假,执行else后面{}
        print("num is not equeal to 3")
    }
    

    26.switch

    num = 12
    switch num {
    case 2:
        print("num等于2")                  // 每个case分支至少需要包含一条语句
        print("num等于2")                  // case分支末尾不需要写break,不会发生贯穿
    case 3, 4, 5:                         // case语句可以匹配多个值,之间用(,)隔开
        print("num == 3 or 4 or 5")
    case 6..<10:                          // case语句也支持区间
        print("num大于等于6,且小于10")
    case 10..<19 where num % 3 == 0:      // 使用where语句来增加额外判断条件
        print("num大于等于10,且小于19,且能被3整除")
    default:
        print("上面的情况都不满足")
    }
    

    27.基本函数: 用来完成特定任务的独立代码片段

    func minMax(currentArray array:[Int]) -> (min:Int,max:Int) {
            
            var currentMin = array[0];
            var currentMax = array[0];
            for arrItem in array {
                if arrItem < currentMin
                {
                    currentMin = arrItem;
                }
                
                if(arrItem>currentMax)
                {
                    currentMax = arrItem;
                }
            }
            return (currentMin,currentMax)
        }
    

    28.不确定参数个数的函数:

    // 计算多个数的平均数
    func avarageNum(_ num: Double...) -> Double { // 参数后面加...表示有多个参数
        var total: Double = 0
        for number in num {
            total += number
        }
        return total/Double(num.count)
    }
    
    avarageNum(2, 6, 4, 8, 7)               // 5.4, 参数个数不限
    avarageNum(5)                           // 注意: 一个函数只能有一个可变参数
    

     27.网络请求框架

     Alamofire.request("http://wimg.mangocity.com/bms/api/app/index/index.json", method: .get, parameters: nil, encoding: JSONEncoding.default)
                .downloadProgress(queue: DispatchQueue.global(qos: .utility)) { progress in
                    print("Progress: (progress.fractionCompleted)")
                }
                .validate { request, response, data in
                    debugPrint(response)
                    return .success
                }
                .responseJSON { response in
                    debugPrint(response)
            }
    

      

     

     

  • 相关阅读:
    flutter_bloc使用解析骚年,你还在手搭bloc吗!
    白嫖JetBrains正版全家桶!
    一文总结设计模式
    201671010119 201620172《Java程序设计》第五周学习心得
    201671010119 201620172《Java程序设计》第二周学习心得
    201671010119 201620172《Java程序设计》第三周学习心得
    201671010119 201620172《Java程序设计》第八周学习心得
    201671010119 201620172《Java程序设计》第四周学习心得
    201671010119 201620172《Java程序设计》第六周学习心得
    201671010119 201620172《Java程序设计》第一周学习心得
  • 原文地址:https://www.cnblogs.com/guchengfengyun/p/7874720.html
Copyright © 2011-2022 走看看