Swift编程语言学习1.3——类型安全和投机型
Swift 是类型安全(type safe )语言。类型安全的语言可以让你清楚地知道代码被处理值类型。假设你需要一个代码String。你绝对不能进去一个不小心传球Int。
因为 Swift 它是类型安全,因此,这将是类型检查的编译代码(type checks),并把不匹配的类型标记为错误。
这能够让你在开发的时候尽早发现并修复错误。
当你要处理不同类型的值时,类型检查能够帮你避免错误。
然而。这并非说你每次声明常量和变量的时候都须要显式指定类型。假设你没有显式指定类型,Swift 会使用类型猜測(type inference)来选择合适的类型。有了类型猜測。编译器能够在编译代码的时候自己主动猜測出表达式的类型。原理非常easy,仅仅要检查你赋的值就可以。
由于有类型猜測。和 C 或者 Objective-C 比起来 Swift 非常少须要声明类型。常量和变量尽管须要明白类型,可是大部分工作并不须要你自己来完毕。
当你声明常量或者变量并赋初值的时候类型猜測很实用。
当你在声明常量或者变量的时候赋给它们一个字面量(literal value 或 literal)就可以触发类型猜測。
(字面量就是会直接出如今你代码中的值,比方42和3.14159。
)
比如。假设你给一个新常量赋值42而且没有标明类型,Swift 能够猜測出常量类型是Int,由于你给它赋的初始值看起来像一个整数:
let meaningOfLife = 42
// meaningOfLife 会被猜測为 Int 类型
同理,假设你没有给浮点字面量标明类型。Swift 会猜測你想要的是Double:
let pi = 3.14159
// pi 会被猜測为 Double 类型
当猜測浮点数的类型时,Swift 总是会选择Double而不是Float。
假设表达式中同一时候出现了整数和浮点数,会被猜測为Double类型:
let anotherPi = 3 + 0.14159
// anotherPi 这将是投机 Double 种类
原版的值3它没有显式声明的类型,该表达式出现在一个浮点字面。所以表达式会炒成Double种类。
Swift编程语言学习1.3——类型安全和投机型的更多相关文章
- Swift编程语言学习3.1排列
Swift 语言提供经典的数组和字典两种集合类型来存储集合数据.数组用来按顺序存储同样类型的数据.字典尽管无序存储同样类型数据值可是须要由独有的标识符引用和寻址(就是键值对). Swift 语言里的数 ...
- Swift编程语言学习9—— 存储属性和计算属性
属性将值跟特定的类.结构或枚举关联.存储属性存储常量或变量作为实例的一部分,计算属性计算(而不是存储)一个值.计算属性能够用于类.结构体和枚举里,存储属性仅仅能用于类和结构体. 存储属性和计算属性通经 ...
- Swift 编程语言学习0.1——Swift简单介绍
有的时候,认为看英文文档有些费时,看中文文档怕翻译不准,有些地方确实不须要抠字眼.当有些地方假设翻译不精准会产生歧义,所以用这样对比的方式.顺便学习一下Swift. Swift is a new pr ...
- Swift编程语言学习1.1——常量与变量
常量和变量把一个名字(比方maximumNumberOfLoginAttempts或者welcomeMessage)和一个指定类型的值(比方数字10或者字符串"Hello")关联起 ...
- Swift编程语言学习6—— 闭包
闭包是自包括的函数代码块,能够在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其它一些编程语言中的 lambdas 函数比較类似. 闭 ...
- Swift编程语言学习4.3—— 控制语句
控制传递语句(Control Transfer Statements) 控制转移语句改变你代码的运行顺序,通过它你能够实现代码的跳转.Swift有四种控制转移语句. continue break fa ...
- Swift编程语言学习2.1——基础运营商(在)
操作员正在检查,更改.归并值特殊符号或短语.例如,加+这两个数字相加(例如let i = 1 + 2). 算如更复杂的逻辑和操作的实施&&(例如if enteredDoorCode & ...
- Swift编程语言学习11—— 枚举全局变量、局部变量与类型属性
全局变量和局部变量 计算属性和属性监视器所描写叙述的模式也能够用于全局变量和局部变量,全局变量是在函数.方法.闭包或不论什么类型之外定义的变量,局部变量是在函数.方法或闭包内部定义的变量. 前面章节提 ...
- Swift编程语言学习1.4——数值型字面量、数值类型转换
数值型字面量 整数字面量能够被写作: 一个十进制数,没有前缀 一个二进制数,前缀是0b 一个八进制数,前缀是0o 一个十六进制数,前缀是0x 以下的全部整数字面量的十进制值都是17: let deci ...
随机推荐
- web开发性能优化---项目架构篇
项目技术架构层级规划和介绍 简称四横两纵 四横即四大层次.分别为: 1.用户渠道层:用户渠道层是直接面向终于用户.通过站点的形式向用户提供产品展示.企业市场宣传.对产品的订购.互动分享.客户关怀以及用 ...
- Android数字签名解析(二)
在Android数字签名解析(一)中,介绍了android进行签名的两种方式,当中用密钥对进行签名用到了signapk.jar这个java库. 以下我们就看看signapk签名实现过程,signapk ...
- centos一些命令
1.查看系统使用端口并释放端口 [root@my_nn_01 WEB-INF]# lsof -w -n -i tcp:80 COMMAND PID USER FD TYPE DEVICE ...
- 【转】.net IL 指令解释速查
名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Add.Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上. Add.Ovf.Un 将两个无符号整数值相加,执行溢出检查,并且 ...
- HDU 4380 Farmer Greedy 计算几何+bitset
枚举直线,对于直线的某个点在直线的左端还是右端,能够状压出一个数.用bitset记录. 然后三角形就是3个bitset&一下 #include <cstdio> #include ...
- UVALive - 4621 Cav 贪心 + 分析
题目大意:有一张洞穴地图,要在这个洞穴里面存放水,要求水不能碰到洞穴顶部.如今给出每一个位置的顶部位置和地面高度.问最多能够放多少水 解题思路:根据物理定理,每一段有水的连续区间,水位高度必须相等 所 ...
- java 配置及安装Eclipse
jdk下载 点我~ Java SE Development Kit 8u20 You must accept the Oracle Binary Code License Agreement for ...
- Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: 'L
1.错误叙述性说明 [ERROR:]2015-06-08 09:49:42,523 [异常拦截] org.hibernate.exception.DataException: error execut ...
- PHP 类属性 类静态变量的访问
php的类属性其实有两种,一种是类常量,一种是类静态变量.两种容易引起混淆. 如同静态类方法和类实例方法一样,静态类属性和实例属性不能重定义(同名),但静态属性可以和类常量同名. <?php c ...
- 正确Linux新手很实用20命令
//正确Linux新手很实用20命令 //slwang 2014.4.19 1, ls list directory contents 内容 ls -l //以详情模式(long li ...