我的Swift学习之旅--Swift中的常量变量和新类型
Swift学习笔记
Swift 语言存在两种类型:命名型类型和复合型类型。命名型类型是指定义时可以给定名字的类型。命名型类型包括类、结构体、枚举和协议。比如,一个用户定义的类MyClass的实例拥有类型MyClass。除了用户定义的命名型类型,Swift 标准库也定义了很多常用的命名型类型,包括那些表示数组、字典和可选值的类型。
复合型类型是没有名字的类型,它由 Swift 本身定义。Swift 存在两种复合型类型:函数类型和元组类型。一个复合型类型可以包含命名型类型和其它复合型类型。例如,元组类型(Int, (Int, Int))包含两个元素:第一个是命名型类型Int,第二个是另一个复合型类型(Int, Int).
1.swift增加了两种类型tuples和optionalTypes
tuples:用于创建和传递一组数据也可以作为函数的一组返回值
optionalTypes:可选类型有点类似于OC中的nil指针理解为:这里有一个值但是不知道它是什么(有点类似于数学中的设X变量)或者那里一个值都没有
常量和变量:
常量:如果存储的值在未来一直不变,将它声明为常量用let 关键字定义
变量:如果存储的值未来的某个时刻可能改变将它声明为变量用var关键字定义
type Annotations:类型注释
声明一个常量或者一个变量的时候可以提供一个类型注释用于说明这个常量或者变量可以存储值的类型,通过在常量或者变量后面加上一个冒号之后写上类型的方法给一个常量或者变量加类型注释
例如:var welcomeMessage:String
如果定义一个常量或者变量的时候直接给这个常量或者变量赋值了 则不用再写类型注释了。因为系统类型安全会自动会通过常量或者变量中存储的值判定常量或者变量可以存储的类型。
常量和变量名:
常量和变量名可以使用任何字符(不包括数学符号,箭头,不能用数字开头)
常量或者变量一旦定义就不能用重复定义 也不能用它来存储和定义类型不同的值
注释:和C语言OC中一样和C不一样的是注释可以嵌套使用
如下:/*hello swift /*我是张勇*/你是谁*/
swift中分号是不需要的,如果一定要写也不会出错 当在一行写不止一条语句的时候要用分号
swift中的类型:整形int 浮点型float 字符串String
当遇到浮点型数据的时候swift的类型推断总是将浮点型推断为double型而不是Float型
类型定义:TypeAliases 同OC中的TypeDefine
元组类型:元组就是复合类型
可选类型:Optional
Swift定义后缀?来作为标准库中的定义的命名型类型Optional<T>的简写。换句话说,下面两个声明是等价的:
- var optionaleInteger:Int?
- var optionalInteger:Optional<Int>
在上述两种情况下,变量optionalInteger都被声明为可选整型类型。注意在类型和?之间没有空格。
类型Optional<T>是一个枚举,有两种形式,None和Some(T),又来代表可能出现或可能不出现的值。任意类型都可以被显式的声明(或隐式的转换)为可选类型。当声明一个可选类型时,确保使用括号给?提供合适的作用范围。比如说,声明一个整型的可选数组,应写作(Int[])?,写成Int[]?的话则会出错
如果你在声明或定义可选变量或特性的时候没有提供初始值,它的值则会自动赋成缺省值nil。
可选符合LogicValue协议,因此可以出现在布尔值环境下。此时,如果一个可选类型T?实例包含有类型为T的值(也就是说值为Optional.Some(T)),那么此可选类型就为true,否则为false
如果一个可选类型的实例包含一个值,那么你就可以使用后缀操作符!来获取该值,正如下面描述的:
optionalInteger=42
optionalInteger! //42
使用!操作符获取值为nil的可选项会导致运行错误(runtime error)
你也可以使用可选链和可选绑定来选择性的执行可选表达式上的操作。如果值为nil,不会执行任何操作因此也就没有运行错误产生

浙公网安备 33010602011771号