Swift语言指南(四)--类型安全和类型推断

Swift是一门类型安全语言,类型安全语言需要代码里值的类型非常明确。如果你的代码中有部分值需要String类型,你就不能错误地传递Int。

鉴于Swift的类型安全,编译代码时,Swift会执行类型检查并将任何类型不匹配的地方标记为错误,使你在开发当中尽可能早的捕获并修正错误。

类型检查有助于你在操作不同值的类型时避免犯错。但这并不意味着你必须在声明每一个常量或变量时去检查类型,如果你不检查所需值的类型,Swift会执行类型推断来计算出相应地类型。

类型推断让编译器在编译代码时,根据你提供的值,自动推测出特定表达式的类型。

基于类型推断,Swift对类型声明的需要远比C或Objective-C语言要少得多。常量与变量仍然有明确的类型,但明确指定类型的工作已经由编译器代你完成。

当你声明一个常量或变量并赋予一个初始值时,类型判断尤其有用。通常通过在声明时赋字面值literal
value
,或称“字面量literal)实现(类型判断)。(字面值指直接出现在源代码中的值,如下例中的
42 与 3.14159)

比如说,你给一个新的常量赋一个字面值42但未指定其类型时,Swift会推断你想要一个Int型的常量,因为你初始化时提供的数字像一个整数:


1 let meaningOfLife = 42
2 // meaningOfLife 被推断为Int型

同样的,如果不为浮点数字面量指定类型时,Swift会推断你想要创建一个Double型:


1 let pi = 3.14159
2 // pi 被推断为Double型

Swift在推断浮点数数字时通常会选用Double(而不是Float)。

如果你在表达式中结合了整数和浮点数字面量,Swift会根据上下文中推断返回Double型:


1 let anotherPi = 3 + 0.14159
2 // anotherPi 会被推断为Double型

上例中,字面值3自身不属于某个类型,也未明确指定类型,根据当前附加部分的浮点数字面量推断并适当地输出Double型。

谢谢,Swifter-QQ群:362232993,同好者进~

Fork:https://github.com/Joejo/Swift-lesson-for-chinese

Swift语言指南(四)--类型安全和类型推断,布布扣,bubuko.com

时间: 2024-10-06 07:42:02

Swift语言指南(四)--类型安全和类型推断的相关文章

Swift语言指南(一)--语言基础之常量和变量

Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处. Swift 提供了 C 与 Objective-C 中的所有基础类型,包括表示整数的 Int,表示浮点数的 Double 与 Float,表示布尔值的 Bool,以及表示纯文本数据的 String. Swift 还为两个基本集合类型 Array 与 Dictionary 提供了强大的支持,详情可参考 (集合类型)Collection Types. 与 C 语言类

Swift语言指南(十)--字符串与字符

原文:Swift语言指南(十)--字符串与字符 字符串是一段字符的有序集合,如"hellow,world"或"信天翁".Swift 中的字符串由 String 类型表示,对应着 Character 类型值的集合. Swift 中的 String 类型为你的编程提供了一个高速的,兼容 Unicode规范 的文本处理方式.Swift 创建和处理字符串的语法轻量可读,与 C 语言的字符串语法颇为相似.字符串的拼接非常简单,只需将两个字符串用 + 运算符相加.字符串的值是否

Swift语言指南(三)--语言基础之整数和浮点数

整数 整数指没有小数的整数,如42,-23.整数可以是有符号的(正数,零,负数),也可以是无符号的(正数,零). Swift提供了8,16,32,64位形式的有符号和无符号的整数,这些整数遵循与C语言相似的命名规则.如8位无符号整数的类型为UInt8,32位有符号整数的类型为Int32,和Swift语言的其它类型一样,这些整型命名以大写字母开头. 整数的边界 你可以通过min或max属性为每一个整数类型指定一个最小值或最大值: 1 let 最小值 = UInt8.min // 最小值 等于 0,

Swift语言指南(五)--数字字面量和数字类型转换

数字字面量 整数字面量写法如下: · 十进制数,无前缀 · 二进制数,以 0b 为前缀 · 八进制数,以 0o 为前缀 · 十六进制数,以 0x 为前缀 下面所有整数的十进制值为 17 : 1 let decimalInteger = 17 2 let binaryInteger = 0b10001 // 17 二进制标识 3 let octalInteger = 0o21 // 17 八进制标识 4 let hexadecimalInteger = 0x11 // 17 十六进制标识 浮点数字

Swift语言指南(九)--基本运算符

运算符(operator)是用来检查,改变或合并值的一种特殊符号或短语.例如,加号运算符让两个数字相加(如:let i = 1 + 2),还有些更复杂的运算符,如逻辑与运算符(&&)(如:if enteredDoorCode && passedRetinaScan)和自增运算符(++i)(将 i 的值加 1 的便捷写法). Swift 支持标准C语言的大多数运算符,并且改进了一些特性以规避常见的代码错误.赋值运算符(=)是没有返回值的,这样是为了避免在使用等于运算符(==)

Swift语言指南(一)基础知识

Swift 是用于开发iOS和OS X的一门新编程语言.尽管如此,Swift的大部分地方看着其实跟C和Objective-C都是挺像的. Swift 提供了C和Objective-C基础类型的自己一套版本,包括用于整型的Int,用于浮点值的Double和Float,用于布尔值的Boolean,和用于文本数据的String.Swift还提供了Array和Dictionary这两种集合类型的增强版本. 像 C 一样, Swift 通过使用变量来存储和引用值. Swift 还支持值不能变的变量.就是我

Swift语言指南(八)--语言基础之元组

元组 元组(Tuples)将多个值组合为一个复合值.元组内的值可以是任何类型,各个元素不需要为相同类型(各个元素之间类型独立,互不干扰--Joe.Huang). 下例中,(404, "Not Found") 是一个描述HTTP状态码的元组.HTTP状态码是当你向WEB服务器请求页面时服务器返回的一个特殊值,如果你(向WEB服务器)请求了一个不存在的网页,返回的状态码就是 404 Not Found : 1 let http404Error = (404, "Not Found

Swift语言指南(二)--语言基础之注释和分号

注释 通过注释向自己的代码中注入不可执行的文本,作为你自己的笔记或提示.Swift编译器运行时会忽略注释. Swift的注释与C语言极其相似,单行注释以两个反斜线开头: //这是一行注释 多行注释以/*开始,以*/结束: ? 1 2 3 <span style="color: rgb(0, 128, 0);">/* 这也是一条注释, 但跨越多行 */ </span> 与 C 语言的多行注释有所不同的是,Swift 的多行注释可以嵌套在其他多行注释内部.写法是在一

Swift之类型安全和类型推断

Swift是一种类型安全的语言.类型安全的语言鼓励推荐在你代码中的值尽量要清楚其所属的类型.如果在你的代码中有一个预先好的字符串,你就不能错误地把他传递或者赋值给一个整数. 因为Swift是类型安全的,当编译你的代码时就会做类型检测并且以错误的方式标识出所有的不匹配的类型.这样使你能够在开发过程中捕获尽早的定位错误. 类型检测能帮助你避免你在不同类型之间工作时出现错误,这意并不意味着你必须为每一个声明的常量和变量指定一个明确的类型.如果你不为你需要的值指定类型,Swift就会用类型推断来计算出其