Swift类型转换 和 类型别名的定义(typealias)

(一)类型转换

类型转化在 Swift 中是比较严格的,不同类型之间可以认为是不能相互转化的,只能重新产生一个对象和值,并拷贝一份。

1.0 整型数值之间的转换。

          

// 不同类型是不能直接相加的,这时我们就需要用到类型转换
let int8 : Int8 = 12
let int16 : Int16 = 14 +  Int16(int8)

print(int16)
//输出 : 26

又上可见,通过转化也可以顺利得到正确的值,但是值得我们注意的是:由短整型向长整型转换是都可以成功的,且不会丢失值;而如果长整型向短整型转换时就会有可能不成功。

如:

let int32 : Int32 = 1234

let int8t : Int8 = Int8(int32) // 出错,无法转换,因为1234 已经超出Int8类型所能表示的最大数值(127)

所以 Swift 也建议我们尽量使用 Int, 而不用去明确地要使用 Int8、UInt 等类型。

2.0 整型数值和浮点型数值之间的转换

let a: Int  = 10

print(Float(a)) // 输出 10.0

let b :Float = 10.2

print(Int(b)) // 输出 10 , 所以浮点类向整型转化,会丢失小数点后的部分,会失去精度

所以我们可以得出: 精度高的向精度低得转换,会丢失,而反之则不会。

(二) 类型别名

所谓类型别名: 就是指给一个类型取一个别名。这里用到关键字 typealias

typealias myInt = Int8

print(myInt.max) //输出 127 ,这我们取里一个别名代替了系统的 Int8 
时间: 2024-08-10 15:01:25

Swift类型转换 和 类型别名的定义(typealias)的相关文章

Swift - 06 - 数值类型转换和类型别名

//: Playground - noun: a place where people can play import UIKit var str = "Hello, playground" // 数值类型转换 let three = 3 let PI = Double(three) + 0.1415926 // 两个类型不相同的数值不能进行基础运算,所以进行数值类型转换 // 类型别名(typealias) typealias NSInterger = Int var number

Swift编程语言学习1.5——类型别名、布尔值、元组

类型别名 类型别名(type aliases)就是给现有类型定义另一个名字.你可以使用typealias关键字来定义类型别名. 当你想要给现有类型起一个更有意义的名字时,类型别名非常有用.假设你正在处理特定长度的外部资源的数据: typealias AudioSample = UInt16 定义了一个类型别名之后,你可以在任何使用原始名的地方使用别名: var maxAmplitudeFound = AudioSample.min // maxAmplitudeFound 现在是 0 本例中,A

Swift之类型别名

类型别名是一个为已存在类型定义的一个可选择的名字.你可以关键字typealias定义一个类型的别名. 当你想通过在一个在上下文中看起来更合适可具有表达性的名字来引用一个已存在的类型时,这时别名就非常有用了,比如当使用来自外部指明大小的数据时: typealias AudioSample = UInt8 一旦你定义了一个类型别名时,你就可以在任何地方使用类型别名来代替原来使用的类型名字: var maxAmplitudeFound = AudioSample.min  // maxAmplitud

Swift 语言附注 类型

本页包含内容: 类型注解(Type Annotation) 类型标识符(Type Identifier) 元组类型(Tuple Type) 函数类型(Function Type) 数组类型(Array Type) 可选类型(Optional Type) 隐式解析可选类型(Implicitly Unwrapped Optional Type) 协议合成类型(Protocol Composition Type) 元类型(Metatype Type) 类型继承子句(Type Inheritance C

04_Swift2基础之类型安全和类型推测+字面量+类型别名

1. 类型安全和类型推测 1> 类型安全 Swift 是一个 _类型安全(type safe)_ 的语言.类型安全的语言可以让你清楚地知道代码要处理的值的类型.如果你的代码需要一个`String`,你绝对不可能不小心传进去一个`Int`. 由于 Swift 是类型安全的,所以它会在编译你的代码时进行 _类型检查(type checks)_ ,并把不匹配的类型标记为错误.这可以让你在开发的时候尽早发现并修复错误. 当你要处理不同类型的值时,类型检查可以帮你避免错误.然而,这并不是说你每次声明常量和

Swift 类型转换is, as, Any, AnyObject(十二)

/// 父类 Person class Person { var name: String init(name: String){ self.name = name } } /// 子类 Woman class Woman: Person { var female: String init(name: String, male: String) { self.female = male super.init(name: name) } } /// 子类 Man class Man: Person

类型别名(define与typedef)

#define NEW OLD //使用预处理器的方法,为OLD定义一个新名称NEW,使用define定义的类型别名,会在预处理的过程中对NEW进行“单纯”的替换,例如: #define N 3+2 int i = N * 2; //预处理后,将会变成 int i = 3 + 2 * 2; //i 的结果将会是7 typedef typeName aliasName; //使用关键字typedef来创建别名,typedef不会创建新的类型,而只是为已知类型创建一个新名称. 两者比较: typed

类型别名、auto类型说明符和decltype类型说明符初探

类型别名 类型别名顾名思义是某种类型的另一个名字,常用于简化类型,易于理解和使用. 传统方法是使用关键字 typedef .新标准规定使用别名声明(alias declaration)来定义类型别名. using zhengxing = int; 如果某个类型别名指代的是复合类型或常量,那么把它用到声明语句中往往会让人理解出错. typedef char *cstring;//cstring 是 char* 的别名 const cstring cstr = 0;//cstr 是指向 char 的

GO语言总结(5)——类型转换和类型断言

上一篇博客介绍了Go语言的数组和切片——GO语言总结(4)——映射(Map),本篇博客介绍Go语言的类型转换和类型断言 由于Go语言不允许隐式类型转换.而类型转换和类型断言的本质,就是把一个类型转换到另一个类型. 一.类型转换 (1).语法:<结果类型> := <目标类型> ( <表达式> ) (2).类型转换是用来在不同但相互兼容的类型之间的相互转换的方式,所以,当类型不兼容的时候,是无法转换的.如下: func test4() { var var1 int = 7