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——类型安全和投机型的更多相关文章

  1. Swift编程语言学习3.1排列

    Swift 语言提供经典的数组和字典两种集合类型来存储集合数据.数组用来按顺序存储同样类型的数据.字典尽管无序存储同样类型数据值可是须要由独有的标识符引用和寻址(就是键值对). Swift 语言里的数 ...

  2. Swift编程语言学习9—— 存储属性和计算属性

    属性将值跟特定的类.结构或枚举关联.存储属性存储常量或变量作为实例的一部分,计算属性计算(而不是存储)一个值.计算属性能够用于类.结构体和枚举里,存储属性仅仅能用于类和结构体. 存储属性和计算属性通经 ...

  3. Swift 编程语言学习0.1——Swift简单介绍

    有的时候,认为看英文文档有些费时,看中文文档怕翻译不准,有些地方确实不须要抠字眼.当有些地方假设翻译不精准会产生歧义,所以用这样对比的方式.顺便学习一下Swift. Swift is a new pr ...

  4. Swift编程语言学习1.1——常量与变量

    常量和变量把一个名字(比方maximumNumberOfLoginAttempts或者welcomeMessage)和一个指定类型的值(比方数字10或者字符串"Hello")关联起 ...

  5. Swift编程语言学习6—— 闭包

    闭包是自包括的函数代码块,能够在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其它一些编程语言中的 lambdas 函数比較类似.   闭 ...

  6. Swift编程语言学习4.3—— 控制语句

    控制传递语句(Control Transfer Statements) 控制转移语句改变你代码的运行顺序,通过它你能够实现代码的跳转.Swift有四种控制转移语句. continue break fa ...

  7. Swift编程语言学习2.1——基础运营商(在)

    操作员正在检查,更改.归并值特殊符号或短语.例如,加+这两个数字相加(例如let i = 1 + 2). 算如更复杂的逻辑和操作的实施&&(例如if enteredDoorCode & ...

  8. Swift编程语言学习11—— 枚举全局变量、局部变量与类型属性

    全局变量和局部变量 计算属性和属性监视器所描写叙述的模式也能够用于全局变量和局部变量,全局变量是在函数.方法.闭包或不论什么类型之外定义的变量,局部变量是在函数.方法或闭包内部定义的变量. 前面章节提 ...

  9. Swift编程语言学习1.4——数值型字面量、数值类型转换

    数值型字面量 整数字面量能够被写作: 一个十进制数,没有前缀 一个二进制数,前缀是0b 一个八进制数,前缀是0o 一个十六进制数,前缀是0x 以下的全部整数字面量的十进制值都是17: let deci ...

随机推荐

  1. login控件“您的登录尝试不成功。请重试”的解决方法

    原文:login控件"您的登录尝试不成功.请重试"的解决方法 遇到login控件“您的登录尝试不成功.请重试”报错之后,在网上找了很久,也按照如下帖子设置了 application ...

  2. 树上点对统计poj1741(树的点分治)

    给定一棵树,边上有权值,要统计有多少对点路径的权值和<=k 分治算法在树的路径中的应用 这个论文里面有分析. 任意两点的路径,要么过根结点,要么在子树中.如果在子树中,那么只要递归处理就行了. ...

  3. flex4 amcharts 删除水印

    package com.twobowl.component.manualTopo { import com.amcharts.AmPieChart; import com.amcharts.chart ...

  4. linux设备驱动程序第四部分:从如何定位oops对代码的调试方法,驱动线

    在一个我们谈到了如何编写一个简单的字符设备驱动程序,我们不是神,编写肯定会失败的代码,在这个过程中,我们需要继续写代码调试.在普通c应用.我们经常使用printf输出信息.或者使用gdb要调试程序,然 ...

  5. 在Eclipse在使用JUnit4单元测试(0基础知识)

    自这篇文章: http://www.devx.com/Java/Article/31983/0/page/1 我们在编写大型程序的时候,须要写成千上万个方法或函数.这些函数的功能可能非常强大,但我们在 ...

  6. Mac下使用MySQL

    0 安装 http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.17-osx10.7-x86.dmg http://dev.mysql.com/down ...

  7. 一起学习android图片四舍五入图片集资源 (28)

    效果图: 參看下面代码: public class MainActivity extends Activity { private ImageView imageView1; private Imag ...

  8. abstract修改方法

    abstract这种方法修饰,主要用在抽象类和抽象方法. 抽象的类是不可实例化的比如 public abstract class Test{ } 他能够含有抽象的方法 public abstract ...

  9. 图的创建和遍历(BFS/DFS)

    图的表示方法主要有邻接矩阵和邻接表.其中邻接表最为常用,因此这里便以邻接表为例介绍一下图的创建及遍历方法. 创建图用到的结构有两种:顶点及弧 struct ArcNode { int vertexIn ...

  10. 超赞的.NET办公软件库

    之前做项目无意中搜到这个站点,一開始以为是国外大牛们的杰作,然后看到联系地址中竟然是四川成都,喔...咱们中国人跟老美.印度人比起来也非常厉害啊. 这个站点一次性提供了word.excel.ppt.p ...