从最基础的Swift语法的开启Swift学习,本篇学习常量变量、数据类型、运算符,以及注释
因是自己的学习笔记,所以只会写与OC/Java差异的部分
主要内容:
1.常量
2.变量
3.数据类型
4.运算符
5.注释
6.print使用
1、常量
简单使用
代码语言:javascript复制//let 常量名:类型
//不限定数据类型
let l1 = "l1"
//限定数据类型
let l2: String = "l2"
//可以在运行时确定值,因此可以赋值变量,此时必须先确定数据类型
let l3:Int
var ii = 1
l3 = ii
print("wy:(l1)--(l2)--(l3)")
(滑动显示更多)
说明
- 可以先定义,之后再赋值
- 与其他的语言相比,Swift可以不需要在编译的时候就有值,可以在运行时才有值
- 可以给常量赋值一个变量,此时必须先确定数据类型,以编译时开辟空间
- 在使用前必须赋值且只能赋值一次
2、变量
简单使用
代码语言:javascript复制//变量名:类型
//不限定数据类型
var i = 1
//限定数据类型
var str: String = "2"
print("wy:(i)--(str)")
说明
- 一般情况下编译期会自动分析出类型,不需要自己写
- 如果我们想要限定类型就可以自己写
- 如果值的数据类型存在歧义编译期无法识别就必须得自己写,比如输入的值是小数,浮点型默认类型是Double,如果想要使用Float就需要自己写了。
- 在使用前必须赋值且只能赋值一次
3、数据类型
在Swift中对数据类型的划分有其特殊性,将所有的类型分为值类型和引用类型(指针类型)
- 数据类型.png
- 引用类型只有类类型
- 这里的枚举和结构体都属于值类型
- 结构体类型的非集合类型包括整型、布尔型、浮点型、字符串,集合类型包括Array、Set、Dictionary。
整型:
- 整型种类有:Int8、Int16、Int32、Int64、UInt8、UInt16、UInt32、UInt64
- 就像是GLSL语法中的数据类型。后面的数字可以说明占用内存字节的大小
- Int默认值在64bit平台上是8个字节,在32bit平台上是4个字节
浮点类型
- 和其他语言一样,如果是Double类型,写成小数类型就默认是Double
- 如果是Float类型,需要明确Float类型
布尔类型
- 值是true和false,这个与Java一样
String、Character
- 默认用""写的就是String,与OC不一样,不需要加@
- 如果需要字符类型,就需要明确Character
集合Array/Set/Dictionary
- 和Java一样,只是不需要限定类型,用[]设置就可以
简单使用
代码语言:javascript复制//这里的Float、Character必须要加数据类型,其他的可加可不加
let a1: Int = 1
let a2: Float = 2.0
let a3: Bool = true
let a4: String = "a4"
let a5: Character = "5"
let array6:Array = [1,2,3]
let set7:Set = [4,5,5,5]
let dictionary: Dictionary = ["age":"18","name":"wy"]//类型要注意匹配
(滑动显示更多)
类型转换
代码语言:javascript复制let a7: Int = 1
let a8: Double = Double(a7)
let a9: String = String(a7)
print(a9)
print(a8)
直接通过类型()来转换
元组
在Swift中有元组概念,元组主要是为了在特殊情况下得到的对象有不用的数据类型的成员的场景使用
创建
代码语言:javascript复制/*
元组的创建
*/
//直接赋值
let http404Error = (404,"Not Found")
//带有标识符
let http202Status = (statusCode:200,desciption:"OK")
(滑动显示更多)
说明:
- 元组可以存储不同数据类型的成员
- 存储的元素可以直接存储成员,也可以带有标识符用以获取
- 一旦声明,可以改值,但不能添加/删除元素
- 不能更改已经声明的元素名称
- 已声明的名称可以省略,但未声明名称的元组,不可添加名称:
简单使用
代码语言:javascript复制/*
元组的使用
*/
//用下标来获取
print("The status code is (http404Error.0)")
//用标识符来获取
print("The status code is (http202Status.statusCode)")
//直接统一赋值给多个变量
let (statusCode,statusMessage) = http404Error
let (justTheStatusCode,_) = http202Status
let (statusCode2, statusMessage2): (Int, String) = http404Error//正确
print(statusCode2,statusMessage2)
(滑动显示更多)
说明:
- 获取有两种方式,一种是直接通过下标获取,一种是通过标识符来获取
- 也可以直接赋值给两个变量/常量
- 取值时可以指定类型,加强类型判断
- 不想处理的值,可以用下划线_代替
和结构体的区别:
- 结构体可以存储函数,元组不可以
- 结构体只能直接存储成员,元组可以存储带有标识符的成员
4、注释
也是多行注释、单行注释、文本注释,和其他语言都是一样的
注意:
- 多行注释可以嵌套
- Playground中的注释可以用MarkUp语法,如果平常写博客应该会很清楚,这样增加了注释的可读性
文档注释使用
代码语言:javascript复制/// 求和【概述】
///
/// 将两个整数相加【更详细的描述】
/// - Parameters:
/// - v1: v1 第一个整数
/// - v2: v2 第二个证书
/// - Returns: 2个整数的和
///
/// - Note : 传入2个证书即可【批注】
func sum(v1: Int,v2: Int) -> Int {
v1 v2
}
(滑动显示更多)
5、运算符
注意:没有自增和自减运算符,其他的均与OC一样
6、print函数的认识
定义:
代码语言:javascript复制/// - Parameters:
/// - items: Zero or more items to print.
/// - separator: A string to print between each item. The default is a single
/// space (`" "`).
/// - terminator: The string to print after all items have been printed. The
/// default is a newline (`"n"`).
public func print(_ items: Any..., separator: String = " ", terminator: String = "n")
(滑动显示更多)
说明:
- 第一个参数items是可变参数,因此它可以是0个或多个参数,
- 第二个参数separator是参数中间的分割字符,默认是" "
- 第三个参数terminator是字符串末尾的字符,默认是"n",换行
使用示例:
代码语言:javascript复制let ss = "swift"
print("快乐","学习","(ss)语言", separator: "-", terminator: "~啦啦")
(滑动显示更多)
运行结果:
7、其他
特殊点
- 不用编写main函数。
- Swift会将全局范围内的首句作为可执行代码的入口程序。
- 当然这并不代表Swift真的不需要main函数,而是编译期在底层会帮我们自动创建main函数
- 一句代码的尾部可以省略分号(;)。
- 如果一行只有一条语句,语句末尾可以写分号,也可以不写分号,系统会自动通过换行来判断语句
- 如果键多条语句写到同一行中,就必须用分号来隔开了。
Playground
Playground可以用来快速预览代码效果,可以很方便的学习语法,因此接下来的代码验证调试主要会使用Playground。
原文链接:https://www.jianshu.com/p/f1ece13fc3e8
- END -