寒城攻略:Listo 教你 25 天学会 Swift 语言 - 03 The Basic

import Foundation

//***********************************************************************************************

//1.The Basics(基础)

//_______________________________________________________________________________________________

//介绍

//Swift 的类型是 C
和 Objective-C 的基础上提出的,Int是整形;Double和 Float
是浮点型,Bool
是布尔型,String 是
字符串。Swift 中还有两个集合类型,Array类型和 Dictionary类型。

//_______________________________________________________________________________________________

//Swift 中除了常用数据类型,还增加了元组(Tuple)。元组可以让你创建或者传递一组数据,比如作为函数的返回值时,你可以使用一个元组返回多个值。

//_______________________________________________________________________________________________

//Swift 还增加了可选(Optional)类型,用于处理值缺失的情况。可选表示某一个值是具体的数据或者为 nil。

//***********************************************************************************************

//2.Constants and Variables(常量和变量)

//_______________________________________________________________________________________________

//简单常量和变量的命名

let maximunNumberOfLoginAttempts =10      //使用
let命名常量,常量不可以再改变

var currentLoginAttempt =0                //使用
var命名变量,变量可以再后面进行修改

currentLoginAttempt = 8

println("The constant number is\(maximunNumberOfLoginAttempts) and the variable number
is\(currentLoginAttempt)")

//_______________________________________________________________________________________________

//数据类型说明

var welcomeMessage:String  ="Hello, Listo"       //直接声明
welcomeMessage为 String
类型

println("the welcomeMessage is\(welcomeMessage)")

//_______________________________________________________________________________________________

//变量名和常量名的类型

let π = 3.1415926      //swift支持变量名很广泛,你可以使用任何字符常量和变量名,包括 Unicode字符

let你好 ="你好世界"

(因为 CSDN 博客不能识别此字符类型,但是 Swift 支持这样的类型,所以只能用图片代替了

//***********************************************************************************************

//3.Comments(注释)

//_______________________________________________________________________________________________

//这是一条注释            //使用 "//"来写注释

/*

/*

*/                  //Swift 中注释的特性是可嵌套性,这在 C/ Objective-C中是没有的

*/

//***********************************************************************************************

//4.Semicolons(分号)

//_______________________________________________________________________________________________

//***********************************************************************************************

//5.Integers(整型数据)

//_______________________________________________________________________________________________

//整型数据介绍

//迅速提供签名和无符号整数8、16、32、64位形式。这些整数遵循命名约定类似于C,在一个8位无符号整数类型UInt8,Int32,32位带符号整数类型。像所有类型迅速,这些整数类型的名称

//_______________________________________________________________________________________________

//整型数据使用

let minValue =
UInt8.min       
//minValue  为 0,是 UInt8类型的最小值

let maxValue =
UInt8.max       
//maxValue  为 255,是 UInt8类型的最大值

println("the max of UInt8 is\(maxValue) and the min of UInt8 is\(minValue)")

//***********************************************************************************************

//6.Floating-Point Numbers(浮点数)

//_______________________________________________________________________________________________

//介绍

//浮点数就是有小数点的数字,例如 3.1415926, 0.1等

//Double 保存 64
位的浮点数(至少 15 位数字),Float
保存 32 位浮点数(至少 7
位数字)

//_______________________________________________________________________________________________

//浮点数的命名和使用

let meaningOfLift =42     
//meaningOfList 会被默认认为是 Int
类型

let  Pi = 3.1415       //Pi
会被认为是默认的 Double
类型

let anotherPi =
3 + 4.25       //anotherPi
会被默认认为是 Double类型

println(anotherPi)

//***********************************************************************************************

//7.Numeric Type Conversion(类型转换)

//_______________________________________________________________________________________________

//当不同类型数据进行运算的时候,Swift不支持隐式的转化,所以需要我们显式的转化才能进行运算

let age =19

let name ="Listo"

let infomation =name +
String(age)

println(infomation)

//***********************************************************************************************

//8.Type Aliases(数据类型重命名)

//_______________________________________________________________________________________________

//重新命名数据类型

typealias AudioSample =UInt16     //把 UInt16
类型重新命名为 AudioSample

var maxAmplitudeFound =AudioSample.min

println(maxAmplitudeFound)

//***********************************************************************************************

//9.Booleans(Bool
类型数据)

//_______________________________________________________________________________________________

//布尔类型数据的命名

let orangesAreOrange =true

let turnipsAreDelicious =false

if turnipsAreDelicious{            //if
后面跟上 Bool
类型数据

println("Mmm, tasty turnips!")

}

else{

println("Eww, turnips are horrible")

}

//***********************************************************************************************

//10.Tuples(元组)

//_______________________________________________________________________________________________

//元组(tuples)把多个值合成一个复合值。元组内的值可以使任意类型,并不要求是相同类型

let http404Error: (Int,String) = (404,"Not
Found")      //http404Error
的类型是 (Int, String),值是
(404, "Not Found")

println("the number of message is\(http404Error.0)
and the information of message is\(http404Error.1)")
     //通过下标访问元组中的元素

//_______________________________________________________________________________________________

//通过参数名访问数组中的元素

let information = (Name:"Listo", Age:
21)

println(" The information of man‘s name is\(information.Name) and the age of man is\(information.Age)")
     //通过参数名访问元组中的元素

//_______________________________________________________________________________________________

//使用 "_"

let (justTheStatusCode,_) =information    //想要不包含元组中的某一个参数的时候就用 
_省略即可

println("the name of man is\(justTheStatusCode)")

//***********************************************************************************************

//11.Optionals(可选类型数据)

//_______________________________________________________________________________________________

//代码演示可选类型

let possibleNumber ="123"

let convertedNumber:Int? =
possibleNumber.toInt()      //此时我们不知道 possibleNumber字符串是否可以转换为
Int 类型,所以我们必须在 Int后面添加 "?"
来表示它为可选类型数据

var responseCode:Int? =
404       //要么存在,值为 404

responseCode =nil                 
//要么不存在,赋值为 nil

//_______________________________________________________________________________________________

//使用
可选类型

//var strValue = nil                  //1.Swift
中 nil 不能用于非可选类型,也就是说如果代码中的常量和变量不存在,那么必须将它声明为可选类型。2.如果定义的可选类型不提供默认值,该对象自动设为 nil

var strValue:String?

println(strValue)

let hashValue =strValue?.hashValue
    //当可选类型数据使用方法时,必须在变量名后面加上 "?"判断数据是否为可选类型,再判断数据有具体的值,如果有,那么就进行方法,如果数据为空时,系统也不会报错,返回 nil

println("hashValue is\(hashValue)")

//_______________________________________________________________________________________________

/*

总结 "?" 的使用场景:

1.声明可选类型变量

2.用在 Optional值的方法操作,用来判断是否响应后面的操作

*/

//_______________________________________________________________________________________________

//解包(!的用法)

//概念:可选类型数据在每次访问的时候,都会提取并检测它的值是否存在,但是有时候根据程序结构我们可以推断可选量在首次赋值的时候必然存在值,这个时候,就不需要每次验证值是否存在,如果确定一个可选量的值一定存在,那么我们使用 "!"进行解包获取它的值

//_______________________________________________________________________________________________

//代码范例

var possibleString:String? =
"An optional string"

println(possibleString!)       //使用 "!"
进行解包,当我们确定 possibleString
一定存在时,不用每次验证值是否存在,如果不存在,程序报错

let stringValue =
possibleString!.hashValue    //解包,这类的 "!"
表示这里的 possibleString
一定为非 nil的

println(stringValue)

//_______________________________________________________________________________________________

/*

总结:当可选类型数据在被使用或者调用某些属性或者方法的时候,在变量名后面加上 "?"
,保证了变量是可选类型数据,使程序可以正常运行

当可选类型数据在被使用或者调用某些属性或者方法的时候,在变量名后面加上 "!" ,保证了变量时可选类型数据并且有具体的值,使程序运行有意义

*/

//_______________________________________________________________________________________________

//隐式解包的可选类型(!的用法)

//概念:隐式解包可选类型可以看作为自动解包可选类型,即不需要每次使用的时候每次使用 "!"来解包数据保证代码有意义,而是直接在定义的时候加上 "!"
,这样可以定义隐式解包可选类型(用!
代替?)

//_______________________________________________________________________________________________

//代码范例

var possibleString1:String! =
"An optional string"     //在定义的时候定义为隐式解包类型数据变量,在后面的操作中我们可以在调用数据的时候不需要进行解包

println(possibleString)       //不需要使用 "!"
进行解包,因为我们在定义的时候已经定义过了

let stringValue1 =possibleString1.hashValue    //不需要使用
"!" 进行解包,因为我们在定义的时候已经定义过了

println(stringValue1)

//_______________________________________________________________________________________________

/*

"!" 用法总结:

1.强制对可选量进行解包

2.声明隐式解包的可选类型的时候,一般用于类中的属性

*/

//***********************************************************************************************

//12.Assertions(断言)

//_______________________________________________________________________________________________

//定义:Optionals使我们能够检查可能存在也可能不存在的值,并编写代码,优雅地处理缺乏价值。在某些情况下,如果值不存在,你的代码是不可能继续执行。在这些情况下,您可以触发一个断言在代码结束代码执行,并提供一个机会来调试的原因缺失或无效的值。

//_______________________________________________________________________________________________

let ages =
3        //测试断言时将 3改称
-3

assert(ages >=0,
"A person‘s age can‘t be less than zero")        //类似于给用代码给程序打断点来检测程序运行

寒城攻略:Listo 教你 25 天学会 Swift 语言 - 03 The Basic

时间: 2024-08-07 08:35:05

寒城攻略:Listo 教你 25 天学会 Swift 语言 - 03 The Basic的相关文章

寒城攻略:Listo 教你 25 天学会 Swift 语言 - 04 Basic Operators

import Foundation //*********************************************************************************************** //1.Basic Operators(基本操作符) //_______________________________________________________________________________________________ //简介 //操作

寒城攻略:Listo 教你 25 天学会 Swift 语言 - 01 About Swift

import Foundation /* Listo Han 出品 Swift 编程攻略 攻略参考:<The Swift Programming Language> 攻略适用:本攻略适合 Swift零基础,但要有至少其他任何一门编程语言基础,熟悉程序语句的用户 攻略格式: 知识模块://***********************************************************************************************/ 模块细节://_

寒城攻略:Listo 教你 25 天学会 Swift 语言 - 02 Swift Tour

import Foundation //*********************************************************************************************** //1.Hello world //_______________________________________________________________________________________________ //输出 "Hello, world&q

寒城攻略:Listo 教你 25 天学会 Swift 语言 - 24 Generics

import Foundation //*********************************************************************************************** //1.Generics(泛型) //_______________________________________________________________________________________________ //介绍 //泛型代码可以让你写出根据

寒城攻略:Listo 教你 25 天学会 Swift 语言 - 25 Listo&#39;s Conclusion

import Foundation //*********************************************************************************************** //1.Listo's Conclusion(Listo 的编写总结) //_______________________________________________________________________________________________

寒城攻略:Listo 教你Linux Cent OS 服务器从搭建到配置

曾经也用过 Linux 服务器,也搭建过,一直浑浑噩噩的,但是今天突然帮朋友搭建一个服务器并使用,还是发现了很多问题,所以写一个详细的技术攻略供未来的朋友遇到问题后参考. 首先考虑到看这篇攻略的朋友可能层次都不同,所以 Listo 个人还是有强迫症的,我就从一个新手的角度来讲解服务器的使用. 首先 Listo 用的阿里云的服务器,这个大家可以去注册阿里云账号购买服务器即可.这里值得一提的是一个很重要的问题,就是各位购买服务器的朋友一定要记得在购买设置配置的时候要买公网 IP,这个很重要,公网和内

寒城攻略:Listo 教你用Swift 语言编写 IOS 平台流媒体播放器

先展示播放器效果: 依旧继承 Listo 本人的强迫症,还是从最初到完成完整的写一个攻略来记录一下,这里声明 Listo 本人也是看了很多的戴维营攻略才总结分享给大家这一篇攻略的. 首先,Listo 使用的是一个开源的第三方框架而不是使用系统本身带有的框架, 这个框架的名字叫做 MobileVLCKit 框架,至于框架的获取,Listo 这里也有截图,首先打开终端,执行命令 "$git clone https://github.com/wuqiong/MobileVLCKit-SDK.git&q

寒城攻略:Listo 教你用 Swift 写IOS UI 项目计算器

之前总结过 Swift 的语言攻略,这里就不做赘述了,现在做一个实例计算器项目来介绍一下 Swift 的应用.(注释已经完全,直接上代码) 先看一下效果图: 下面是具体的代码和解释: 分享快乐,开源中国,转载请声明出处

寒城攻略:Listo 教你用 Swift 写IOS UI 项目生活记事本

刚才用 Swift 写了一个记事本的应用,仅仅是简单的 UI 方向的开发,先来上产品的界面: 如今 Listo 给分享源码: 共同进步,开源中国.转载请声明出处