美文网首页
Swift 初探

Swift 初探

作者: 四叶帅 | 来源:发表于2019-09-27 17:57 被阅读0次

另附上.playground文件,可使用最新xcode打开运行
https://github.com/BlueStormLSS/swift

import UIKit

//基于swift5
//var可变 let不可变 ////?表示可能存在也可能不存在  !表示一定存在
//:后可不跟类型,会根据赋值自动给与类型
var varInt = 40
var varIntNil : Int
var varIntClass : Int = 40

let letInt = 30.0
let letIntClass : Double = 30.0

let letString : String? = nil
let letStrings : String! = nil


///字符串
let letString1 = "Hello"
let letString2 : String = " "
var varString1 = "World"
let letString3 = "\(letString1+letString2)world"

print(letString1+letString2+varString1)
print(letString3)

//遍历字符串
for c in letString1 {
    print(c)
}

///数组

let letArray1 = [String]()//创建一个内容类型为String的空数组
let letArray2 : [Int] = [1,2,3]//创建一个内容类型为Int的数组
let letArray3 = [Int](repeating: 4, count: 6)//创建一个6个元素,并且都为Int类型,元素为4的数组
let letArray4 = ["one","two","three"]
var varArray1 = letArray4
//添加元素
varArray1.append("four")

print("letArray1 = \(letArray1)")
print("letArray2 = \(letArray2)")
print("letArray3 = \(letArray3)")
print("letArray4 = \(letArray4)")
print("varArray1 = \(varArray1)")

//合并数组
let letArray5 = letArray2+letArray3
print("letArray5 = \(letArray5)")


//添加元素
varArray1 += ["five"]
print("varArray1 = \(varArray1)")

//更改元素
varArray1[2] = "3"
print("varArray1 = \(varArray1)")

//计算个数
print("letArray5的元素个数为:\(letArray5.count)")
//判空
print("letArray5 是否为空:\(letArray5.isEmpty)  letArray1 是否为空:\(letArray1.isEmpty)")

///遍历数组
for item in varArray1 {
    print(item)
}

for (idx,item) in varArray1.enumerated() {
    print("在idx = \(idx)位置上的元素为\(item)")
}

///字典

//以下内容不再用print打印,右侧可直接观察

var dictionary1 = [String:Int]()//创建key为String类型,value为Int类型的空字典
//如果有就修改,没有就添加
dictionary1.updateValue(1, forKey: "one")///此方法会返回旧的值
dictionary1.updateValue(2, forKey: "two")///此方法会返回旧的值
dictionary1.updateValue(3, forKey: "three")///此方法会返回旧的值

print(dictionary1)
//指定key修改
dictionary1["one"] = 11

//移除key-value
dictionary1.removeValue(forKey: "one")

//dictionary1.removeAll()

//获取所有key
print("\(dictionary1.keys)")
//获取所有value
print("\(dictionary1.values)")
//个数
print("键值对个数:\(dictionary1.count)")
//是否为空
print("是否为空:\(dictionary1.isEmpty)")
//遍历字典
for (key,value) in dictionary1 {
    print("第一种遍历:key = \(key),value = \(value)")
}

for (key,value) in dictionary1.enumerated() {
    print("第二种遍历:key = \(key),value = \(value)")
}


///函数和各种循环,条件语句

//函数下面有如何使用
//传入一个String,返回一个Int
func funcOne(str : String) -> (Int){
    print(str)
    return 5
}
//和funcOne啥区别呢 嘿嘿
func funcOnePlus(_ str : String) -> (Int){
    return 4
}
//加法
func funcAdd(one : Int, two : Int) -> (Int){
    return one+two
}

//返回一个元组  (后面是不对的)(元组 暂时理解为特殊的数组,数组是有序的,并且类型相同)
func funcParameter() -> (one : Int , two : String){
    return (4,"string")
}
//无参无返回值
func funcNono() -> (){
    print(funcParameter())
}


//进阶 函数套函数
func funcAddOne() -> Int{
    var y = 10
    //返回值为空时,返回值 ->() 可省略
    func add(){
        y += 5
    }
    add()
    return y
}

//返回值为一个函数
func funcMake() -> ((Int) -> Int) {
    
    //addOne的参数为 Int ,返回值是 Int,也就是 (Int) -> Int 结构
    //funcMake 返回值是(Int) -> Int ,所以可以返回addOne 函数本身
    func addOne(number : Int) -> Int {
        return 1+number;
    }
    return addOne
}

//传参是一个函数
func funcParter(list:[Int] ,condition: (Int) -> Bool) -> Bool {
    for item in list {
        if condition(item) {
            return true
        }
    }
    return false
}
//传参的函数
func lessThan(number : Int) -> Bool {
    return number < 13
}

let arrays = [4,6,8,10,1,3,7]

for (idx,item) in arrays.enumerated() {
    if item == 4 {
        let result1 = funcOne(str: "string")
        let result2 = funcOnePlus("string")
        print(funcAdd(one: result1, two: result2))
    }else if item == 6{
        funcNono()
    }else if item == 8{
        print(funcAddOne())
        
        //funcMake 返回值为一个函数
        let makeFunc = funcMake()
        print(makeFunc(4))
        
        //传参是一个函数
        let numbers = [20,13,7,1]
        
        let trueOrFalse = funcParter(list: numbers,condition: lessThan)
        print(trueOrFalse)
    }else{
        switch item {
        case 10:
            print("当前循环次数:\(idx) 值为10")
        case 1:
            print("当前循环次数:\(idx) 值为11")
            continue///swift swith不需要break,所以,如果想继续执行,需要加continue,另外
        case 3:
            print("当前循环次数:\(idx) 值为10")
        default:
            print("当前循环次数:\(idx) 就剩最后一个小7了")
        }
        
        
    }
}

相关文章

  • Swift 中协议的扩展的简单应用

    参考: Swift面向协议编程初探 从 Swift 的面向协议编程说开去 根据下面的结构 设计类和协议 使用:

  • Swift 底层原理初探

    Swift 底层原理初探 1. 编译原理 在iOS中我们经常使用Objective-C和Swift这两门语言进行编...

  • swift初探

    ?操作符 Swift中是可以声明一个没有初始值的属性,Swift中引入了可选类型(Optional)来解决这一问题...

  • Swift初探

    开始之前允许吐槽一下,swift作为apple官方牵头并且为主的语言,特性进行了如此多修改和版本迭代对于一门开发语...

  • Swift 初探

    Swift 学习第一节 @(Swift 深入学习小记) if 语句缺省值的使用。 switch 支持任意类型的数据...

  • 初探swift

    Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LO...

  • Swift初探

    1.自定义打印语句2.代码书写 自定义打印语句为什么要自定义打印语句呢?因为Swift太简单,连打印信息都只有一句...

  • Swift初探

    Swift简介 Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C...

  • Swift初探

    import Foundation//// 输出语句 //print("Hello, World!") // //...

  • Swift 初探

    另附上.playground文件,可使用最新xcode打开运行https://github.com/BlueSto...

网友评论

      本文标题:Swift 初探

      本文链接:https://www.haomeiwen.com/subject/mtyauctx.html