原文:Swift中文手册 -- The Basics

基础部分

Swift 是 iOS 和 OS X 应用开发的一门新语言。然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的。

Swift 的类型是在 C 和 Objective-C 的基础上提出的,Int是整型;DoubleFloat是浮点型;Bool是布尔型;String是字符串。Swift 还有两个有用的集合类型,ArrayDictionary,详情参见集合类型(待添加链接)

就像 C 语言一样,Swift 使用变量来进行存储并通过变量名来关联值。在 Swift 中,值不可变的变量有着广泛的应用,它们就是常量,而且比 C 语言的常量更强大。在 Swift 中,如果你要处理的值不需要改变,那使用常量可以让你的代码更加安全并且更好地表达你的意图。

除了我们熟悉的类型,Swift 还增加了 Objective-C 中没有的类型比如元组(Tuple)。元组可以让你创建或者传递一组数据,比如作为函数的返回值时,你可以用一个元组可以返回多个值。

Swift 还增加了可选(Optional)类型,用于处理值缺失的情况。可选表示“那儿有一个值,并且它等于 x ”或者“那儿没有值”。可选有点像在 Objective-C 中使用nil,但是它可以用在任何类型上,不仅仅是类。可选类型比 Objective-C 中的nil指针更加安全也更具表现力,它是 Swift 许多强大特性的重要组成部分。

Swift 是一个类型安全的语言,可选就是一个很好的例子。Swift 可以让你清楚地知道值的类型。如果你的代码期望得到一个String,类型安全会阻止你不小心传入一个Int。你可以在开发阶段尽早发现并修正错误。

常量和变量

常量和变量把一个名字(比如maximumNumberOfLoginAttempts或者welcomeMessage)和一个指定类型的值(比如数字10或者字符串Hello)关联起来。常量的值一旦设定就不能改变,而变量的值可以随意更改。

声明常量和变量

常量和变量必须在使用前声明,用let来声明常量,用var来声明变量。下面的例子展示了如何用常量和变量来记录用户尝试登录的次数:

let maximumNumberOfLoginAttempts =
var currentLoginAttempt =

这两行代码可以被理解为 : “声明一个名字是maximumNumberOfLoginAttempts的新常量,并给它一个值10。然后,声明一个名字是currentLoginAttempt的变量并将它的值初始化为0.”

在这个例子中,允许的最大尝试登录次数被声明为一个常量,因为这个值不会改变。当前尝试登录次数被声明为一个变量,因为每次尝试登录失败的时候都需要增加这个值。

你可以在一行中声明多个常量或者多个变量,用逗号隔开:

var x = 0.0, y = 0.0, z = 0.0

注意:如果你的代码中有不需要改变的值,请将它声明为常量。只将需要改变的值声明为变量。

类型标注

当你声明常量或者变量的时候可以加上类型标注,说明常量或者变量中要存储的值的类型。如果要添加类型标注,在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。

这个例子给welcomeMessage变量添加了类型标注,表示这个变量可以存储String类型的值:

var welcomeMessage: String

声明中的冒号代表着“是...类型”,所以这行代码可以被理解为::

“声明一个类型为String,名字为welcomeMessage的变量。”

“类型为String”的意思是“可以存储任意String类型的值。”

welcomeMessage变量现在可以被设置成任意字符串:

welcomeMessage = "Hello"

注意:一般来说你很少需要写类型标注。如果你在声明常量或者变量的时候赋了一个初始值,Swift可以推断出这个常量或者变量的类型,详情参见类型安全和类型推断(待添加链接)。在上面的例子中,没有给welcomeMessage赋初始值,所以添加了一个类型标注。

常量和变量的命名

你可以用任何你喜欢的字符作为常量和变量名,包括Unicode字符:

let π = 3.14159
let 你好 = "你好世界"
let

最新文章

  1. html嵌套MP4、PDF的简单方案
  2. Linux:U盘安装Linux系统
  3. apache 配置用户级目录
  4. Failed to load unit 'PATM' (VERR_SSM_FIELD_NOT_CONSECUTIVE)
  5. 【网络流24题】 No.12 软件补丁问题(最小转移代价 最短路)
  6. 自动输入用户名和密码用于telnet的shell
  7. PHP配置安全小技巧
  8. Spring IoC介绍与Bean的使用
  9. HTTP请求的header头解析
  10. python 往mysql数据库中插入多条记录。
  11. Ajax增删改查-----------删 改
  12. MongoDB数据导出
  13. CSS 社区的解决方案,对比
  14. java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
  15. ERP项目实施记录06
  16. Python全栈-day14-模块和包
  17. 推荐一些socket工具,TCP、UDP调试、抓包工具 (转载)
  18. ArcGIS API for javascript开发笔记(五)——GP服务调用之GP模型的发布及使用详解
  19. 342. Power of Four(One-line)
  20. HyperLedger Fabric 1.4 简介(6.1)

热门文章

  1. .NET读写Excel工具Spire.Xls使用(1)入门介绍
  2. Atitit.软件GUIbutton和仪表板(01)--警报系统--
  3. Linux下 高性能、易用、免费的ASP.NET服务器
  4. iPhone发展【一】从HelloWorld开始
  5. Yaha,Yaho
  6. 【嵌入式开发】写入开发板Linux系统-模型S3C6410
  7. FZU 1686 龙之谜 重复覆盖
  8. Windows store 验证你的 URL http:// 和 https:// ms-appx:/// ms-appdata:///local
  9. 美工与程序猿的Web工作怎样做到相对分离?
  10. uva 11572 - Unique Snowflakes(和书略有不同)