鱼C论坛

 找回密码
 立即注册
查看: 1963|回复: 1

[见证历程] 5.1 swift 学习过程

[复制链接]
发表于 2019-10-30 16:00:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
官方教程:[https://docs.swift.org/swift-book/GuidedTour/GuidedTour.html](https://docs.swift.org/swift-book/GuidedTour/GuidedTour.html)
个人博客:http://140.238.1.66:9002/
## 1. 注释
```text
//var 表示变量

/* let 表示常量,
@@@@@@@@ */
```

## 2. 基础类型

> Int 有符号整型 32位系统:Int32 64位系统:Int64
> UInt 无符号整型 32位系统:UInt32 64位系统:UInt64
> Double 浮点数 占64字节
> Float 浮点数 占32字节
> Bool 布尔类型
> Character 字符
> String 字符串

### coding
import Cocoa

var a:Int = Int.max
//二进制
var a1:Int = 0b10
//16进制
var a2:Int = 0x12
//64字节 浮点数
var b:Double = 2.0
//32字节 浮点数
var c:Float = 1.0
var d:Bool = true
var e:Character = "A"
var g:String = "(*′▽`)ノノ"
// \()可用于表达式读取
print("a=\(a)")
//可选类型
var opA:String? = "sa"

if let str = opA {
    print("opA'值=\(str)")
}else {
    print("opA'值 为空")
}
```

## 3. 运算符
> 百度更详细

## 4. 关键字
> 百度更详细

## 5. 元组
### coding

```swift
import Cocoa

//不指定类型
var a = (1,2,2)
//指定元素
print("a0=\(a.0)")

//指定类型
var b:(String, Int, Bool) = ("21", 1, true)
print("b=\(b)")

//设置可选项

var c:(String, Int)?

print("c 当前值:\(c)")

if c == nil {
    c = ("找不到页面", 404)
}

//取值方式一,optional必须有值
print("c! 方式取值=\(c!.0)")

//取值方式二、?符号进行步骤分解 为nil,直接跳转值else
if let str = c?.0 {
    print("if c? 方式取值=\(str)")
}
```

6. 集合类型
### coding
```swift
import Cocoa

// Array 操作
//方式一
//var intArray = [1,2,3]
//方式二
//var intArray = Array<Int>(arrayLiteral: 1,2,3)
//方式三
//var intArray = [Int]()
//方式四
var intArray = Array(repeating: 0, count: 3);
var intArray2 = [2,3,4]

intArray.append(4) // 新增
print("intArray 数组内容:\(intArray)")
print("intArray2 数组内容:\(intArray2)")
print("拼接后的数组:\(intArray + intArray2)")
//替换下标 0<= x <=1的内容
intArray[...1] = [2,3]
print("修改后 intArray 数组内容:\(intArray)")

//替换下标 0<= x <1的内容
intArray[0..<1] = [8]
print("修改后 intArray 数组内容:\(intArray)")

//遍历
print("intArray 遍历:")
for item in intArray {
    print(item, separator: "", terminator: " ")
}
print()
// Set 操作
var sNames:Set<String> = ["😁", "窝", "w"]
print("sNames=\(sNames)")
sNames.insert("w")
print("新增w后 sNames=\(sNames)")

// Dictionary 操作
//方式一
var maps = [Int:String]()
//方式二
//var maps:[Int:String] = [:]
//方式三
//var maps:Dictionary<Int,String> = Dictionary<Int,String>()

//元素新增
maps[1] = "hello"
//maps.updateValue("hello", forKey: 1)

//元素删除
print("maps=\(maps)")

//遍历 方式一
for item in maps {
    print("key=\(item.key) val=\(item.value)")
}

//遍历 方式二
//for (key, value) in maps {
//    print("key=\(key) val=\(value)")
//}

//maps[1] = nil
if let value = maps.removeValue(forKey: 1) {
    print("maps 删除key=1 ,value= \(value)")
}

print("删除后 maps=\(maps)")

```
### set 方法归纳
![image.png](http://140.238.1.66:9002/upload/2019/10/image-08d20a3cf110450791121ab5c2b5b82a.png)

7. 异常处理
### coding
```swift
import Cocoa

//class、enum、struct
enum MEnumErrors : Error {
    case NotDuang
    case GGGG
}

class MClassErrors : Error {
    var msg:String
    
    init(_ msg:String) {
        self.msg = msg
    }
}

func pang(_ a:Int) throws{
    guard a != 1 else {
        throw MEnumErrors.NotDuang
    }
    
    if a == 2 {
        throw MClassErrors("class 子类异常")
    }
}

do {
    try pang(1)
    print("无异常")
} catch MEnumErrors.GGGG{
    print("捕获异常 GGGG")
} catch MEnumErrors.NotDuang{
    print("捕获异常 NotDuang")
}

let err = try? pang(2)

//不建议使用
//let err = try! pang(2)

if err == nil {
    print("有异常抛出")
}else {
    print("没异常")
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-11-2 09:44:41 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 03:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表