Swift学习-基础部分

let maxNum = 1000  // 声明常量
//maxNum = 1001        // 不可变

var index = 2               // 声明变量
index = 3                       // 可变

var x = 1, y = 2, z = 3  // 同时声明多个值, 逗号分隔
// Type inference 自动判断值的类型, 固定为初值类型
//x = "hello"                    
var s = "hello"

let website: String = "www.imooc.com"  // 显式声明类型
var a, b, c: Double       // 同时显式声明多个变量

/*  整形   */ 
var imInt: Int = 80
Int.max
Int.min

//imInt = 99999999999999999999 编译时报错

var imUIntf: UInt = 80
UInt.max  // 无符号整形, 不能存储负数
UInt.min  // 最小是0,


Int8.max
Int8.min
UInt8.max
UInt8.min

Int16.max
Int16.min
UInt16.max
UInt16.min

Int32.max
Int32.min
UInt32.max
UInt32.min

Int64.max
Int64.min
UInt64.max
UInt64.min

let decimalInt: Int = 17       // 十进制
let binaryInt: Int  = 0b10001  // 二进制
let octalInt: Int   = 0o21     // 八进制
let hexInt: Int     = 0x11     // 十六进制

let bigNum1 = 1_000_000         // 下划线分隔大数字, 自由分隔位置
let bigNmu2 = 1_00_0000         //
/*  浮点数,小数 */
let imFlouat: Float  = 3.1415926 // 3.141593
let imDouble: Double = 3.1415926 // 3.1415926

let x = 3.1415926 // 自动判定类型为 Double
var a = 1.25e10   // 1.25 乘以 10 个 10
var b = 1.25e-8   // 1.25 除以 8 个 10
var c = 1_000_000.000_000_1 // 下划线分隔, 增强可读性
/* 类型转换 */
let x: UInt16 = 100
let y: UInt8  = 20
//x + y  不支持隐式类型转换, 只能显式转换, 要求严格, 规避错误
let m = x + UInt16(y)

let w:Float = 3         // 3为浮点数, 但未自动转换类型
//let v:Int   = 3.0     // 3.0判断为浮点数, 不能赋值给Int值 v
let v:Int   = Int(3.0)
/* 布尔类型 简单if */
let imTrue:Bool  = true
let imFalse      = false
let a = 1

if imTrue {
    print("I'm true")
}else{
    print("I'm false")
}

if 1{   // 报错, 1 不在作为true被执行, 对比其他语言1=true, false=0, 'Int' is not convertible to 'Bool'
    print("执行")
}
/* Touple 元祖 */
// 将任意个不同的值集合成一个数据, 不同的值可以是不同类型, 小括号中书写数据
var point = ( 5 , 2)
var ( x , y) = point
x        // 访问元祖的值, 方式1
point.0  // 访问元祖的值  方式2

var httpResponse:(Int , String) = (404 , "Not Found!")  //  显式声明元祖数据

let point2:(x: Int, y:Int ) = (3 , 2) // 声明元祖 指定名称1
let point3 = (x: 3 , y: 2)            // 声明元祖 指定名称2

let (_ , httpResult) = httpResponse   // 使用下划线忽略元祖其他值
httpResult
/* 命名方式 = 首字母大写, 对齐方式 = 名称+类型+值 各自对齐  */
let imInt:    Int    = 3
let imFloat:  Float  = 3.14
let imDouble: Double = 3.1415926
let imBool:   Bool   = true
let imString: String = "Hello, Swift:)"

var 名字 = "wangpl"        // 常量, 变量名字非常开放, uicode编码都可以
print("我的名字是" + 名字)

var ? = "smile"
print(名字 + ?)

/* print输出方式 */
let x = 1, y = 2, z = 3 , b = true
print(x,y,z, b)                       // 输出不同值时, 自带空格分隔符和尾换行
print(x , y , z , separator:",")      // separator表示重置/替换 输出不同值时替换的分隔符
print(x , y , z , terminator:":)")    // separator表示重置/替换 尾换行
print("\(y) * \(z) = \(y*z)")         // 双引号里插入 \() ,表示将相应的值 放在该位置
/*  可选类型  */
let possilebNumber  = "123"
let convertedNumber = Int(possilebNumber)  // 尝试将一个 String 转换成 Int, 此时 convertedNumber 的类型是可选类型 Int?

// nil    Swift 中是一个确定的值,用来表示值缺失, 任何类型的可选状态都可以被设置为 nil,不只是对象类型。
//        OC    中, nil是一个空指针,  指向不存在对象的指针
var serverResponseCocde: Int? = 404
serverResponseCocde = nil
var a = 10  // 声明一个Int a, 后赋值 nil , 报错 Nil cannot be assigned to type 'Int'
//a = nil
var b: String? // 此时 b 的值自动设为 nil

// if 语句及强制解析
if convertedNumber != nil { // 如果可选类型有值, 它将不等于 nil
    print("convertedNumber有值") // 输出 有值
}
// 强制解析: 当确定可选类型有值时, 可以在可选类型名字后面加一个感叹号 ! 来获取值, 这个惊叹号表示"我知道这个可选有值, 请使用它"
if convertedNumber != nil {
    print("\(convertedNumber!)") // 输出 123
}

// 可选绑定 (optional binding),  用来判断可选类型是否包含值, 如果包含就把值赋给一个临时常量/变量,
// 可选绑定可以用在if 和 while语句中, 这条语句不仅可以用来判断可选类型中是否有值, 同时可以将可选类型中的值赋给一个常量或者变量
if let actualNumber = Int(possilebNumber) {
    actualNumber // 值为 123
}else{
    print("无")
}
// 你可以包含多个可选绑定或多个布尔条件在一个 if 语句中, 只要使用逗号分开就行. 只要有任意一个可选绑定的值为 nil, 或者任意一个布尔条件为false, 则真个 if 条件判断为false, 这时你就需要使用嵌套if条件语句来处理, 如下所示
if let firstNumber = Int("4"), let secondNumber = Int("42"), firstNumber < secondNumber && secondNumber < 100{
    print("\(firstNumber) < \(secondNumber) < 100")  // 输出
}

if let firstNumber = Int("4") {
    if let secondNumber = Int("42") {
        if firstNumber < secondNumber && secondNumber < 100 {
            print("\(firstNumber) < \(secondNumber) < 100")
        }
    }
}
// 输出 "4 < 42 < 100"


// 隐式解析 , 自动解析可选类型
let str1: String? = "An optional string"
let str2: String  = str1! // 需要感叹号来获取值

let str3: String! = "An implicitly unwrapped optional string"
let str4: String  = str3  // 不需要感叹号
// 如果一个变量可能变成 nil 的话, 请不要使用隐式解析可选类型


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值