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 还扩充了值不可变的量--即常量,使它比 C 语言中的常量强大得多。 当在 Swift 中操作不需要改变值的数据时,使用常量可使代码更安全、更简洁。
除常见类型以外,Swift 还引入了 Objective-C 中不存在的高级类型,其中包括元组(tuple),可以新建或传递一组值。函数可以将多个值作为整体(多个元组值的组合)返回给调用方。
Swift 还引入了可选值(optional types),可处理不存在的值。可选值可以“存在一个值 x”,也可以“不存在任何值”。可选值与 Objective-C 为指针赋 nil 相似,但在 Swift 中可以对任意类型使用,而不只针对类。可选值比 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关键字声明一个常量来保存代码中不会被改变的值,使用var关键字保存代码中需要改变的值
类型标识
声明常量或变量时刻提供类型标识,以指定该常量或变量可以保存的值的类型。使用时在常量或变量名后面跟一个冒号,一个空格再加上要使用的类型名称:
var welcomeMessage: String
冒号在声明表示“...的类型是...”,所以,上例中的代码意思是:“变量welcomeMessage的类型是String”。
“String类型”意味着可以保存“任何String类型的值”,也就是说可以存储的“东西的类型(或东西的种类)”。
变量welcomeMessage现在可以保存任意字符串类型的值,不会报错:
welcomeMessage = "Hello"
注:
在实践中需要类型标识的情况非常罕见。如果你在定义常量或变量时提供了初始值,Swift 通常能够推断出该常量或变量应使用的类型,详情参见 类型安全及类型推断(后续章节译到)。在上述 welcomeMessage 例子中,没有提供初始值,因此才通过类型说明给 welcomeMessage 变量明确指定类型,而没有让它通过初始值推断。
常量与变量的命名
你几乎可以使用任何字符来给常量或变量命名,包括Unicode字符:
let π = 3.14159
let 你好 = "你好世界"
let

= "dogcow
常量及变量的名称不可以包含数学符号、箭头、私有(即无效的)Unicode 码数,或绘制线条/方框用的字符。并且名称不能以数字开头, 但除了开头的其他地方都可以使用数字。
一旦你声明了一个指定了值类型的常量或者变量,那你就不能再次给它重新声明同名的常量或变量了,也不能更改使其存放不同类型的值,更不能把常量再次声明为变量,变量再次声明为常量。
注:
如果需要将常量或变量命名为 Swift 的保留字,可以在将该保留字作为名称使用时用反引号(`)包围。尽管如此,你还是应该避免将保留字作为名称使用,除非迫于无奈。
你可以将变量的值重新更改为其它同类型的值,如下例中变量friendlyWelcome的值由“hello!”变为“Bonjour!”:
var friendlyWelcome = "Hello!"
friendlyWelcome = "Bonjour!"
//friendlyWelcome 的值现在为 "Bonjour!"
与变量不同的是,常量一旦被赋值就不可再更改。尝试更改将会报错,下面代码编译时会报错:
let languageName = "Swift"
languageName = "Swift++"
// 编译时报错 - languageName 不可更改
常量和变量的输出
通过printIn函数输出常量和变量的当前值:
println(friendlyWelcome)
// 输出 "Bonjour!”
println 是一个全局函数,输出值并在末尾接换行符。例如在 Xcode 环境开发,println 会将输出内容输出至 Xcode 的“控制台”面板。(另一个函数 print 执行几乎一样的操作,不同之处在于,后者不会在输出值末尾换行。)
与 Cocoa 的 NSLog 函数相似,println 还能输出更复杂的日志消息,消息内容可以包含常量或变量的当前值。
Swift用字符串插入(string interpolation)的方式把常量名或者变量名当做占位符加入到长字符串中,提示Swift用当前常量或变量的值去替换这些占位符。将常量或变量名放入反斜杠符加一对圆括号中--"\()":
println("The current value of friendlyWelcome is \(friendlyWelcome)")
// 输出 "The current value of friendlyWelcome is Bonjour!”
注:
字符串插入可用的所有选项参见字符串插入(后续章节译到)
谢谢,Swifter-QQ群:362232993,同好者进~
Fork:https://github.com/Joejo/Swift-lesson-for-chinese
Swift语言指南(一)--语言基础之常量和变量的更多相关文章
- Swift语言指南(七)--语言基础之布尔值和类型别名
原文:Swift语言指南(七)--语言基础之布尔值和类型别名 布尔值 Swift有一个基本布尔类型,叫做布尔(bool),布尔值又称逻辑值(logical),因为它只能为真(true)或假(false ...
- Swift语言指南(八)--语言基础之元组
原文:Swift语言指南(八)--语言基础之元组 元组 元组(Tuples)将多个值组合为一个复合值.元组内的值可以是任何类型,各个元素不需要为相同类型(各个元素之间类型独立,互不干扰--Joe.Hu ...
- Swift语言指南(二)--语言基础之注释和分号
原文:Swift语言指南(二)--语言基础之注释和分号 注释 通过注释向自己的代码中注入不可执行的文本,作为你自己的笔记或提示.Swift编译器运行时会忽略注释. Swift的注释与C语言极其相似,单 ...
- Swift语言指南(三)--语言基础之整数和浮点数
原文:Swift语言指南(三)--语言基础之整数和浮点数 整数 整数指没有小数的整数,如42,-23.整数可以是有符号的(正数,零,负数),也可以是无符号的(正数,零). Swift提供了8,16,3 ...
- 二、JavaSE语言基础之常量与变量
1.常量 所谓常量值的是数据处理过程中值不能更改的数据. 2.变量 所谓变量值的是运算过程中值可以改变的数据,类似于代数中的未知数. 在Java语言中,使用变量时必须遵循先定义,而后赋值, ...
- 【C语言入门教程】2.2 常量 与 变量
2.2 常量 与 变量 顾名思义,常量是运算中不能改变数值的数据类型,变量是可改变数值的数据类型.根据需要,可将一些在程序中不必改变数值的类型定义为常量,这样也可避免因修改数值造成程序错误.任何改变常 ...
- 02_Swift2基础之常量和变量+注释+分号
1. 常量和变量 常量 和 变量 把一个名字(比如 'number' 或者 'welcomeMessage')和一个指定类型的值(比如数字'10'或者字符串 ' "Hello" ' ...
- JavaScript基础——JavaScript常量和变量(笔记)
JavaScript常量和变量(笔记) Javascript代码严格区分大小写. javascript暂不支持constant关键字,不允许用户自定义常量. javascript使用var关键字声明变 ...
- C语言第四节数据类型、常量、变量
数据 什么是数据 生活中时时刻刻都在跟数据打交道,比如体重数据.血压数据.股价数据等.在我们使用计算机的过程中,会接触到各种各样的数据,有文档数据.图片数据.视频数据,还有聊QQ时产生的文字数据.用迅 ...
随机推荐
- Apple Watch 2.0 数据通讯
经常会碰到Watch app和WatchKit extension需要访问同一个文件.比如,使用一个自定义的字体,播放多媒体文件.有两种方法完成这个任务. 设计的时候,每个包放一份文件.它们分别访问自 ...
- 开源Math.NET基础数学类库使用(02)矩阵向量计算
原文:[原创]开源Math.NET基础数学类库使用(02)矩阵向量计算 开源Math.NET基础数学类库使用系列文章总目录: 1.开源.NET基础数学计算组件Math.NET(一)综合介绍 ...
- 探索Windows Azure 监控和自动伸缩系列2 - 获取虚拟机的监控定义和监控数据
上一篇博文介绍了如何连接Windows Azure: http://www.cnblogs.com/teld/p/5113063.html 本篇我们继续上次的示例代码,获取虚拟机的监控定义和监控数据. ...
- 玩转Web之JavaScript(三)-----javaScript语法总结(三) 窗口/滚动条/文本的相关语法
JS语法集锦(三) 窗口/滚动条/文本 alert("文本") 警告框:警告框经常用于确保用户可以得到某些信息,当警告框出现后,用户需要点击确定按钮才能继续进行操作. con ...
- ORA-01791: not a SELECTed expression 一种是不 bug 的 bug!
[ora11@lixora ~]$ !sql sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Wed Aug 27 09: ...
- Java 内部类分析
一.简介 因为现在是Android开发实习生.发现在发展过程中越来越多,但他们知道什么时候该使用真实的情况,但没有获得,例如,使用内部类,因此,学习和自己的总结后发现,通过互联网的信息,家分享,如有不 ...
- 【ASP.NET】判断访问网站的客户端是PC还是手机
原文:[ASP.NET]判断访问网站的客户端是PC还是手机 主要就是通过客户端传递的User-agent来判断访问网站的客户端是PC还是手机,.NET中就是Request.ServerVariable ...
- 家庭洗车APP --- Androidclient开展 之 网络框架包介绍(一)
家庭洗车APP --- Android客户端开发 之 网络框架包介绍(一) 上篇文章中给大家简单介绍了一些业务.上门洗车APP --- Android客户端开发 前言及业务简单介绍,本篇文章给大家介绍 ...
- 在SQL Server Management Studio中可以运行作业但是用T-SQL运行则失败
原文:在SQL Server Management Studio中可以运行作业但是用T-SQL运行则失败 问题: 在SQL Server Management Studio中可以运行作业但是用T-SQ ...
- 辛星整理3linux笔记,免费下载点,我希望对你有所帮助
忙乱,这是我第一次看李指出老师的视频时,,这本书是关于116页面,在csdn下载对:点我下载 ,假设左边的地址崩溃了,也能够在浏览器中输入例如以下地址然后下载:http://download.csdn ...