分号

Swift 并不强制要求你在每条语句的结尾处使用分号(;)

你打算在同一行内写多条独立的语句必需要用分号

let cat = "?

??

?

"; println(cat)
// 输出 "?? ?? "

常量和变量把一个名字(比方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

注意:假设你的代码中有不须要改变的值。请使用letkeyword将它声明为常量。

仅仅将须要改变的值声明为变量。

类型标注

当你声明常量或者变量的时候能够加上类型标注(type annotation)。说明常量或者变量中要存储的值的类型。

假设要加入类型标注。须要在常量或者变量名后面加上一个冒号和空格。然后加上类型名称。

这个样例给welcomeMessage变量加入了类型标注,表示这个变量能够存储String类型的值:

var welcomeMessage: String 

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

“声明一个类型为String。名字为welcomeMessage的变量。”。“类型为String”的意思是“能够存储随意String类型的值。”

welcomeMessage变量如今能够被设置成随意字符串:

welcomeMessage = "Hello" 

注意:一般来说你非常少须要写类型标注。

假设你在声明常量或者变量的时候赋了一个初始值,Swift能够判断出这个常量或者变量的类型,请參考类型安全和类型判断。在上面的样例中,没有给welcomeMessage赋初始值。所以变量welcomeMessage的类型是通过一个类型标注指定的。而不是通过初始值判断的。

常量和变量的命名

你能够用不论什么你喜欢的字符作为常量和变量名,包含 Unicode 字符:

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

常量与变量名不能包括数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符。

也不能以数字开头。可是能够在常量与变量名的其它地方包括数字。

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

同一时候,你也不能将常量与变量进行互转。

注意:假设你须要使用与Swift保留keyword同样的名称作为常量或者变量名,你能够使用反引號(`)将keyword包围的方式将其作为名字使用。不管怎样。你应当避免使用keyword作为常量或变量名。除非你别无选择。

你能够更改现有的变量值为其它同类型的值,在以下的样例中,friendlyWelcome的值从"Hello!"改为了"Bonjour!":

var friendlyWelcome = "Hello!"
friendlyWelcome = "Bonjour!"
// friendlyWelcome 如今是 "Bonjour!"

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

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

输出常量和变量

你能够用println函数来输出当前常量或变量的值:

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

println是一个用来输出的全局函数,输出的内容会在最后换行。假设你用 Xcode,println将会输出内容到“console”面板上。(还有一种函数叫print。唯一差别是在输出内容最后不会换行。)

println函数输出传入的String值:

println("This is a string")
// 输出 "This is a string"

与 Cocoa 里的NSLog函数类似的是。println函数能够输出更复杂的信息。这些信息能够包括当前常量和变量的值。

Swift 用字符串插值(string interpolation)的方式把常量名或者变量名当做占位符增加到长字符串中,Swift 会用当前常量或变量的值替换这些占位符。

将常量或变量名放入圆括号里,并在开括号前使用反斜杠将其转义:

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

注意:字符串插值全部可用的选项,请參考字符串插值。

赵雅智_Swift(2)_swift常量和变量的更多相关文章

  1. 赵雅智_Swift(1)_swift简单介绍及类型

    Swift 是 iOS 和 OS X 应用开发的一门新语言. 假设你有 C 或者 Objective-C 开发经验, Swift 的非常多内容都是你熟悉的. Swift 的类型是在 C 和 Objec ...

  2. 赵雅智_Swift(4)_断言

    可选能够让你推断值是否存在.你能够在代码中优雅地处理值缺失的情况.然而,在某些情况下,假设值缺失或者值并不满足特定的条件.你的代码可能并不须要继续执行.这时.你能够在你的代码中触发一个断言(asser ...

  3. 赵雅智_Swift(3)_swift凝视

    请将你的代码中的非运行文本凝视成提示或者笔记以方便你将来阅读. Swift 的编译器将会在编译代码时自己主动忽略掉凝视部分. 单行凝视 以双正斜杠作(//)为起始标记: // 这是一个凝视 多行凝视 ...

  4. 赵雅智_ContentProvider

    ContentProvider介绍 ContentProvider是不同应用程序之间进行交换数据的标志API 也就是说:一个应用程序通过ContentProvider暴露自己的数据操作接口,那么无论该 ...

  5. 赵雅智_Android编码规范

    凝视 导入mycodetemplates.xml统一凝视样式 须要加凝视的地方 类凝视(必加) 方法凝视(必加) 块凝视主要是数据结构和算法的描写叙述(必加) 类成员变量和常量凝视(选择性加入) 单行 ...

  6. 赵雅智_Fragment生命周期

    官网帮助文档链接:  http://developer.android.com/guide/components/fragments.html 主要看两张图.和跑代码 一,Fragment的生命周 w ...

  7. 赵雅智:js知识点汇总

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhemhpMjEyOQ==/font/5a6L5L2T/fontsize/400/fill/I0 ...

  8. 赵雅智_ListView_BaseAdapter

    Android界面中有时候须要显示略微复杂的界面时,就须要我们自己定义一个adapter,而此adapter就要继承BaseAdapter,又一次当中的方法. Android中Adapter类事实上就 ...

  9. 赵雅智_BroadcastReceiver电话监听

    AndroidManifest.xml 注冊广播接收者 加入权限 <?xml version="1.0" encoding="utf-8"?> &l ...

随机推荐

  1. [图文][提供可行性脚本] CentOS 7 Fencing+Pacemaker三节点搭建高可用集群

    实验说明: 实验环境: 宿主机系统   :Fedora 28 WorkStation 虚拟机管理器 :Virt-Manager 1.5.1 虚拟机配置   :ha1  CentOS 7.2 1511 ...

  2. mysql 导入数据库

    1:创建数据库 dos 进入 xxx\MySQL5.7\bin 目录(很多人喜欢把这个路径配置在环境变量path中,这样在dos敲命令时,就直接是mysql......) mysql -uroot - ...

  3. 如何用纯 CSS 创作阶梯文字特效

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MXYBEM 可交互视频教 ...

  4. 无法解析具体reference那个同名文件

    公司平台,如果src和gen文件系统中有同名文件.reference时会根据depend.cfg文件优先reference遇到的同名文件.这样如果存在同名文件且引用顺序不对就会有莫名的bug. 像rt ...

  5. (原)iOS 用recursiveDescription打印View

    今天要做一个搜索功能,用到UISearchBar 无奈背景太丑,就自定义了一个,首先用View私有方法打印一下searchBar的层次, 具体修改代码如下 for (UIView *view in _ ...

  6. 剑指Offer(书):调整数组顺序使奇数位于偶数前面

    题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. public void ...

  7. POJ:2406-Power Strings(寻找字符串循环节)

    Power Strings Time Limit: 3000MS Memory Limit: 65536K Description Given two strings a and b we defin ...

  8. EFCore CodeFirst模型迁移生成数据库备注(mysql)

    重写Mysql下sql脚本生成器 using Framework.NetCore.Extensions; using Framework.NetCore.Models; using Microsoft ...

  9. chrome 下载插件包及离线安装 附 Advanced Rest Client 下载

    最近需要测试http rest服务,由于chrome插件的轻便,首先想到了用chrome插件,在google商店找到Advanced Rest Client,用了一阵感觉不错. 于是项目组其他同事也要 ...

  10. JSON Extractor/jp@gc - JSON Path Extractor 举例

    测试描述 使用json返回结果做校验 测试步骤 1.配置http请求 2.根据结果树返回的json,取值 {"status_code":200,"message" ...