美文网首页
Swift代码

Swift代码

作者: Matsonga | 来源:发表于2019-10-09 23:09 被阅读0次
import UIKit

// 解包:读取可选类型时,要先查看值是否为nil。这个过程叫解包

let str = "hello world"
print(str)

var varName = "hello swift"
varName = "马冲是天才!"
print(varName)

var myNumber : Int
var myFloat : Float

myNumber = 120183501007
myFloat = 25.0

//////////////////////////////////////////////////////////////////////////////
////////////////////////////  数据类型的声明  ///////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

// 数字和bool类型
var swiftFloat0 : Float
var swiftFloat1 : Float64
var swiftFloat2 : Float80

// 集合类型  数组(arrays)、字典(dictionarys)、集合(sets)
// 数组中可以存放任何类型元素 包括基础类型,结构体,和类
var hasPet : Bool

// 数组属于i敏感类型数据
// 一个int型的数组
//var arrayOfInts : Array<Int>    // 简洁写法同下
var arrayOfInts : [Int]

// swift基础数据类型。int float character string
//var dic : Dictionary<String,String>  // 简洁写法同下
var dic :[String : String]

// 集合  是一个无序的集合 值必须唯一并可被哈希
var noOrderSets : Set<Int>

//////////////////////////////////////////////////////////////////////////////
////////////////////////////  字面量和角标   ///////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

var literal = "Hello playground"   // Hello playground 为字面量
literal = "Hello swift"
let literal_Str = literal

// 在playground中添加两个字面量
let num = 2
let fmStation = 91.1

//////////////////////////// 数组和字典字面量 ///////////////////////////////////
let numberArray = [1,12,35]
let strDic      = ["no1":13 , "no2": 17]
let strDic1     = [22:"haha" ,25:"马聪" , 26:"120183501007"]

/////////////////////// 通过角标访问数组元素 字典同理 //////////////////////////////
let getNumberArray = numberArray[2]
let getStrDic = strDic["no1"]
let getStrDic1 = strDic1[25]

//////////////////////////////////////////////////////////////////////////////
///////////////////////////////  构造器   /////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

let emptyString = String()
let emptyArratOfInts = [Int]()
let emptySetOfFloats = Set<Float>()

// 有默认值的类型
let defaultNumber = Int()
let defaultBool = Bool()   // 默认时 false

// 类型可以有多个构造器
let number = 42
// String的构造器可以接收Int作为参数 然后根据int的值创建字符串
let stringOfInt = String(number)

let createSet = Set([205,105,22])
let defaultFloat = Float()
let createOfFloat = Float(3.1415926)


// 类型推断
let easyPi = 3.14    // 推断为double
let floatFromDouble = Float(easyPi)  // 推断为float

// 属性
let emptyStrings = "1234"
emptyStrings.isEmpty  // 判断是否为空
emptyStrings.first

// 若要检查集合是否为空,请使用其“isEmpty”属性,而不是将“count”与零进行比较。
emptyStrings.underestimatedCount
emptyStrings.count

let countUp = ["one","one","three","four"]
let secondElemnet = countUp[1]
countUp.count
countUp.last
countUp.startIndex
countUp.endIndex
countUp.distance(from: 0, to: 3)  // 不知道干啥的

var countingUp = countUp    // 把字符串添加到数组末尾
countingUp.append("five")

//////////////////////////////////////////////////////////////////////////////
////////////////////// 可选  表示变量中可能没有值 /////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

var anOpeationFloat : Float?
var anOPeationArrayOfString : [String]?
var anOpeationArrayOpeationStrings : [String?]?

var reading11 : Float
var reading22 : Float
var reading33 : Float

var reading1 : Float?
var reading2 : Float?
var reading3 : Float?

// 可选类型的赋值和其他类型一样
// 解包:读取可选类型时,要先查看值是否为nil。这个过程叫解包
reading1 = 3.0
reading2 = 4.0
reading3 = 5.0

//////////////////////////////////////////////////////////////////////////
///////////////////   解包分为强制解包 和 正常解包    /////////////////////////

// 下面展示强制解包 ***********

// 下面例子会报错。因为可选类型需要解包
//let avgreading = (reading1 + reading2 + reading3) / 3

// **********************   强制解包存在潜在问题 , 相当于告诉编译器可选值肯定不为空,可以当作正常浮点数处理     ****************
// 如果把 “ reading3 = 5.0 ”  注释掉就会报错
//let avgreading1 = (reading1! + reading2! + reading3!) / 3


// 下面展示正常解包 ***********
if  let r1 = reading1 ,
    let r2 = reading2 ,
    let r3 = reading3
    {
        let avgNum = (r1 + r2 + r3) / 3
    }else{
        let error = "仪器报告读数为nil"
    }

//////////////////////////////////////////////////////////
///////////////////   字典角标    /////////////////////////

let nameByParkingSpace = [13:"alice" , 17:"Bob"]
let space13Assigness : String? = nameByParkingSpace[13]
let space42Assigness : String? = nameByParkingSpace[42]

// 字典解包

if let space13Assigness = nameByParkingSpace[13] {
    print("key 13 is assigned in the dictionary!")
}else{
    print("解包失败!有空值!")
}

//////////////////////////////////////////////////////////
///////////////////   循环和字符串v补全    //////////////////

// 0...3表示,从0到3包含3,如果是0..<3,是0到3但是不包含3
for i in 0..<3 {
    print(i)
}

// 特殊写法
// 如果在for循环中不需要用到下标i
for _ in 0..<3 {
    print("_ in 0..<3 <---->hello")
}

for str in countUp {
    print(str)
}

let dict = ["a":1, "b":2, "c":3];
for (key,value) in dict {
    print("key: \(key) value : \(value) ");
}

// 不论 i 和 string 如何调换 前面的形参都为索引值
for (i,string) in countingUp.enumerated() {
    print("countingUp测试 ---->i:\(i) ,, string: \(string) ")
}

for item in countingUp.enumerated() {
    print("idx =\(item)");
}

// 枚举输出
for (idx,item) in countingUp.enumerated() {
    print("下标:\(idx) 值:\(item)")
}

//跨步遍历,这个是swift另外一个特性 stride跨步  ********
for idx in stride(from: 0, to: 10, by: 2) {
    print("idx = \(idx)");
}

let rang = 0 ..< countingUp.count
for i in rang {
    print(i)
}

// 枚举字典元素
for (index,dicName) in strDic1.enumerated() {
    print("index:\(index)-----value\(dicName)")
}

//////////////////////////////////////////////////////////////////////////////
//////////////////////////   枚举和Switch  ////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

















相关文章

网友评论

      本文标题:Swift代码

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