菜鸟从零开始认识学习Swift。感谢大神们翻译的文档。搬到自己小黑屋里慢慢看~~~

本页包含内容:

  • 常量和变量
  • 声明常量和变量
  • 类型标注
  • 常量和变量的命名
  • 输出常量和变量
  • 注释
  • 分号

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

Swift 包含了 C 和 Objective-C 上所有基础数据类型,Int表示整型值;DoubleFloat表示浮点型值;Bool是布尔型值;String是文本型数据。Swift 还提供了三个基本的集合类型,ArraySetDictionary,详见集合类型。

就像 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 = 10
var currentLoginAttempt = 0

这两行代码可以被理解为:

“声明一个名字是maximumNumberOfLoginAttempts的新常量,并给它一个值10。然后,声明一个名字是currentLoginAttempt的变量并将它的值初始化为0。”

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

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

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

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

类型标注

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

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

var welcomeMessage: String

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

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

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

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

welcomeMessage = "Hello"

你可以在一行中定义多个同样类型的变量,用逗号分割,并在最后一个变量名之后添加类型标注:

var red, green, blue: Double

注意:
一般来说你很少需要写类型标注。如果你在声明常量或者变量的时候赋了一个初始值,Swift可以推断出这个常量或者变量的类型,请参考类型安全和类型推断。在上面的例子中,没有给welcomeMessage赋初始值,所以变量welcomeMessage的类型是通过一个类型标注指定的,而不是通过初始值推断的。

常量和变量的命名

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

常量与变量名不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符。也不能以数字开头,但是可以在常量与变量名的其他地方包含数字。

一旦你将常量或者变量声明为确定的类型,你就不能使用相同的名字再次进行声明,或者改变其存储的值的类型。同时,你也不能将常量与变量进行互转。

注意:
如果你需要使用与Swift保留关键字相同的名称作为常量或者变量名,你可以使用反引号(`)将关键字包围的方式将其作为名字使用。无论如何,你应当避免使用关键字作为常量或变量名,除非你别无选择。

你可以更改现有的变量值为其他同类型的值,在下面的例子中,friendlyWelcome的值从"Hello!"改为了"Bonjour!":

var friendlyWelcome = "Hello!"
friendlyWelcome = "Bonjour!"
// friendlyWelcome 现在是 "Bonjour!"

与变量不同,常量的值一旦被确定就不能更改了。尝试这样做会导致编译时报错:

let languageName = "Swift"
languageName = "Swift++"
// 这会报编译时错误 - languageName 不可改变

输出常量和变量

你可以用print(_:separator:terminator:)函数来输出当前常量或变量的值:

print(friendlyWelcome)
// 输出 "Bonjour!"

print(_:separator:terminator:)是一个用来输出一个或多个值到适当输出区的全局函数。如果你用 Xcode,print(_:separator:terminator:)将会输出内容到“console”面板上。separatorterminator参数具有默认值,因此你调用这个函数的时候可以忽略它们。默认情况下,该函数通过添加换行符来结束当前行。如果不想换行,可以传递一个空字符串给terminator参数--例如,print(someValue, terminator:"")。关于参数默认值的更多信息,请参考默认参数值。

Swift 用字符串插值(string interpolation)的方式把常量名或者变量名当做占位符加入到长字符串中,Swift 会用当前常量或变量的值替换这些占位符。将常量或变量名放入圆括号中,并在开括号前使用反斜杠将其转义:

print("The current value of friendlyWelcome is \(friendlyWelcome)")
// 输出 "The current value of friendlyWelcome is Bonjour!

注释

请将你的代码中的非执行文本注释成提示或者笔记以方便你将来阅读。Swift 的编译器将会在编译代码时自动忽略掉注释部分。

Swift 中的注释与 C 语言的注释非常相似。单行注释以双正斜杠(//)作为起始标记:

// 这是一个注释

你也可以进行多行注释,其起始标记为单个正斜杠后跟随一个星号(/*),终止标记为一个星号后跟随单个正斜杠(*/):

/* 这是一个,
多行注释 */

与 C 语言多行注释不同,Swift 的多行注释可以嵌套在其它的多行注释之中。你可以先生成一个多行注释块,然后在这个注释块之中再嵌套成第二个多行注释。终止注释时先插入第二个注释块的终止标记,然后再插入第一个注释块的终止标记:

/* 这是第一个多行注释的开头
/* 这是第二个被嵌套的多行注释 */
这是第一个多行注释的结尾 */

通过运用嵌套多行注释,你可以快速方便的注释掉一大段代码,即使这段代码之中已经含有了多行注释块。

分号

与其他大部分编程语言不同,Swift 并不强制要求你在每条语句的结尾处使用分号(;),当然,你也可以按照你自己的习惯添加分号。有一种情况下必须要用分号,即你打算在同一行内写多条独立的语句:

Swift傻傻分不清楚系列(一)常量与变量相关推荐

  1. Swift傻傻分不清楚系列(十一)类和结构体

    本页包含内容: 类和结构体对比 结构体和枚举是值类型 类是引用类型 类和结构体的选择 字符串(String).数组(Array).和字典(Dictionary)类型的赋值与复制行为 类和结构体是人们构 ...

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

    原文:Swift语言指南(一)--语言基础之常量和变量 Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处. Swif ...

  3. Swift傻傻分不清楚系列(八)函数

    本页包含内容: 函数定义与调用(Defining and Calling Functions) 函数参数与返回值(Function Parameters and Return Values) 函数参数 ...

  4. Swift傻傻分不清楚系列(四)基本运算符 o_O!???

    本页包含内容: 术语 赋值运算符 算术运算符 组合赋值运算符 比较运算符 三目运算符 空合运算符 区间运算符 逻辑运算符 运算符是检查.改变.合并值的特殊符号或短语.例如,加号(+)将两个数相加(如  ...

  5. Swift傻傻分不清楚系列(十二) 属性

    本页包含内容: 存储属性(Stored Properties) 计算属性(Computed Properties) 属性观察器(Property Observers) 全局变量和局部变量(Global ...

  6. Swift傻傻分不清楚系列(十)枚举

    本页内容包含: 枚举语法(Enumeration Syntax) 使用 Switch 语句匹配枚举值(Matching Enumeration Values with a Switch Stateme ...

  7. Swift傻傻分不清楚系列(九)闭包

    本页包含内容: 闭包表达式(Closure Expressions) 尾随闭包(Trailing Closures) 值捕获(Capturing Values) 闭包是引用类型(Closures Ar ...

  8. Swift傻傻分不清楚系列(七)控制流

    本页包含内容: For-In 循环 While 循环 条件语句 控制转移语句(Control Transfer Statements) 提前退出 检测 API 可用性 Swift提供了多种流程控制结构 ...

  9. Swift傻傻分不清楚系列(六)集合类型

    本页包含内容: 集合的可变性(Mutability of Collections) 数组(Arrays) 集合(Sets) 字典(Dictionaries) Swift 语言提供Arrays.Sets ...

最新文章

  1. java图书分析echarts_Echarts后台Java解析
  2. js实现当前导航菜单高亮显示
  3. 小程序 座位管理系统(一)(纯前端)
  4. linux如何开启sni服务,Nginx开启单IP多SSL证书支持-TLS SNI support
  5. oracle 察看用户是否被锁,解锁以及改密码
  6. Linux一定需要文件系统吗?
  7. 数学标记语言MathML简介、工具及兼容
  8. 刘意JavaSE 学习笔记 Day12-Day14——字符串API(String/StringBuffer/StringBuilder...)
  9. 超详细教程解决Win10计划任务定时重启jar服务
  10. [源码和文档分享]基于VC++实现的中国象棋-双人象棋游戏
  11. MySQL-性能优化
  12. Java家庭收支记账程序
  13. 固定的信念?(29)
  14. 一天一阔阔儿ZYNQ的linux移植完整版(Linux环境搭建以及内核编译)
  15. 百分点大数据技术团队:Cesium技术在智慧应急行业的应用
  16. 3. Unity之三维模型
  17. 【ppp概念股龙头】PPP项目落地显著加速 四大板块牛股或受益
  18. 一年之计在于春,一日之计在于晨,劲爆
  19. element-ui:el-autocomplete实现搜索结果多次点击不关闭弹框
  20. 国自然热点|2022年组蛋白修饰文章精选回顾

热门文章

  1. class com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$Text
  2. 2010-2011年中国嵌入式开发从业人员调查报告隆重推
  3. 学习笔记【2010/09/20-2010/11/27】
  4. 演示方法:有抱负的分析师
  5. C++11 Lambda函数(匿名函数)
  6. 嵌入式名词以及简略说明
  7. Linux vim 的编码格式,linux下的文件编码,vim编码
  8. linux 引导程序修复工具,linux 引导修复工具
  9. mysql的timestamp类型_MySQL数据库中的timestamp类型与时区
  10. navicat 只对比一张表的数据_Excel VBA批量新建工作表(对比数据透视表的使用)...