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.minInt16.max
Int16.min
UInt16.max
UInt16.minInt32.max
Int32.min
UInt32.max
UInt32.minInt64.max
Int64.min
UInt64.max
UInt64.minlet 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.1415926let 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 = 1if 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  // 访问元祖的值  方式2var httpResponse:(Int , String) = (404 , "Not Found!")  //  显式声明元祖数据let point2:(x: Int, y:Int ) = (3 , 2) // 声明元祖 指定名称1
let point3 = (x: 3 , y: 2)            // 声明元祖 指定名称2let (_ , 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 { // 如果可选类型有值, 它将不等于 nilprint("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 的话, 请不要使用隐式解析可选类型

Swift学习-基础部分相关推荐

  1. Swift学习:基础部分(The Basics)

    Swift 是一门开发 iOS macOS watchOS  和 tvOS 应用的新语言.然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现Swift 的很多内容都是你熟悉的. ...

  2. 零基础使用Swift学习数据科学

    概述 Swift正迅速成为数据科学中最强大.最有效的语言之一 Swift与Python非常相似,所以你会发现2种语言的转换非常平滑 我们将介绍Swift的基础知识,并学习如何使用该语言构建你的第一个数 ...

  3. Apple Swift学习资料汇总

    [更新]Apple Swift学习资料汇总 1月16日厦门 OSC 源创会火热报名中,奖品多多哦 »   今年的苹果开发者大会(WWDC)上,公布了ios8的几个新特性,其中包括引入了群聊功能,支持第 ...

  4. 汇集了很多swift 学习指南

    https://github.com/ipader/SwiftGuide 1,059  Unstar 7,294 Fork1,966 ipader/SwiftGuide  Code  Issues 0 ...

  5. 自学IOS开发第2天·学习基础SwiftUI

    文章目录 学习基础SwiftUI 跟着官方文档创建一个项目 工程基本介绍 基本UI 构建简单视图 创建CircleImage 完成视图 课后习题 学习基础SwiftUI 我完全跟着SwiftUI官方教 ...

  6. swift 学习资料大全

    版本:Swift github排名 https://github.com/trending,github搜索:https://github.com/search 主要工作说明:  1. 将Swift从 ...

  7. Swift语言基础笔记(一)

    Swift是苹果公司2014年推出的全新编程语言,继承了C.Objective-C的特性,目前已经发布了Swift 3:它是一种现代的强类型的语言,具有兼容.开源.简洁的特点,也是一种安全的语言,苹果 ...

  8. swift 学习(一)

    swift学习 一.基础部分 1. 常量(let) 变量(var) swift能够自己推断变量的类型,可以不用写变量的类型 let test = "你好,世界!!" let tes ...

  9. Golang学习-基础命令

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. . Golang学习-基础命令 一.go run 用于运行命令源码文件,只能接收一个命令源码文件以及若干个库源码文件作为 ...

最新文章

  1. 收藏 | 2019 NLP大全:论文、博客、教程、工程进展全梳理(附链接)
  2. 监听屏幕 android.intent.action.USER_PRESENT
  3. 关于“无法解析的外部符号”和“该符号在函数_wmain 中被引用”的问题
  4. Hibernate3的配置参数汇总
  5. 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
  6. AndroidStudio 编译异常java.lang.OutOfMemoryError: GC overhead limit exceeded
  7. R语言︱list用法、批量读取、写出数据时的用法
  8. struts1、 struts2所有版本jar包下载地址大全
  9. HDOJ1003 MaxSum【逆推】
  10. STM32控制AD7124采集调试流程
  11. python selenium下载图片_selenium下载图片(原图)
  12. 手工测试人员如何转测试开发?
  13. c语言编译器tc2.0,深入认识 Turbo C 编译器 C语言 TC2.0.doc
  14. 对外汉语偏误语料库_对外汉语偏误
  15. 驾考系统C#winform驾照考试系统
  16. 以题促学01_matplotlib画图_分别用subplots和subplot,add_subplot3种方法画组合图
  17. 计算机应用基础操作题答案,电大本科计算机应用基础网考操作题及答案
  18. PyCharm社区版安装教程和环境配置及使用
  19. 方大九钢携手图扑软件:数字孪生“高精尖”智慧钢厂
  20. JAVA的奇门遁甲--lombok简单使用

热门文章

  1. IT常用软件下载与安装
  2. Nabla Operator
  3. 服务器简介(二):服务器安全威胁简介、漏洞和补丁简介
  4. ureport2报表支持中英文
  5. iOS Matter 操作证书签发方案
  6. 关于人工智能的9个可能让你大吃一惊的事实
  7. PR模板 时尚简洁手机竖屏竖版短视频宣传抖音PR模板
  8. AR空间音频能力,打造沉浸式声音体验
  9. EMR重磅发布智能运维诊断系统(EMR Doctor)——开源大数据平台运维利器
  10. 响铃:科技成为时髦指数风向标,捧明星造潮流的影视行业是什么姿势?