3. 数字

转载自http://wanwu.tech/2017/03/04/numbers/
现在你已经做好了编程的前期工作,我们正式开始吧。

这一章中,你将学习怎么样用Swift表达数字,其中你还将学到注释表达式运算符常数变量等知识。

就像婴儿学数数一样,我们也要开始学习数字了。

新建一个Playground,开始我们的学习。

Hello World

进入Playground之后,你会看到以下代码,下面我们所有代码请写在这些代码之后。至于这些代码什么意思,你也会很快知道的,不要着急。

//: Playground - noun: a place where people can play

import UIKit

var str = "Hello, playground"

注释

想象一下你进入了一个未知的世界,不知身在何处。突然,在一面墙上有这么一段话:

//: Playground - noun: a place where people can play
// 请尽情的玩吧

有没有感觉顿时轻松了好多。

其实,这句话就是你新建的Playground自动生成的一段单行注释。这段注释告诉了你这里的基本信息。语法结构就是双斜杠//,后面接你想表达的内容。

当你发现这样的信息对你很有帮助的时候,你可能也想留一段类似的注释给后来人,或者未来的你,告你那个人他在这里将会看到的东西。但是如果你想表达更多的内容的话,你可以这样写:

//: Playground - noun: a place where people can play
// 请尽情的玩吧,这里真的很好玩
// 你可以学到如何使用Swift来编程

也可以这样写为多行注释

/*
: Playground - noun: a place where people can play
 请尽情的玩吧,这里真的很好玩
 你可以学到如何使用Swift来编程
 */

多行注释的语法是用/*...*/包裹你的注释内容。

至于你想怎样写,并没有严格的要求。但是记住,注释可以让别人或者未来的你更好的理解你的代码,请习惯在合适的地方写合适的注释。

输出打印

这里的打印并不是说要用打印机打印文件,而是把信息输出到一个外围设备,比如说你的屏幕上。

在你的Playground中输入:

print("Hello, world")

观察右侧结果查看栏,是不是有:

"Hello, world\n"

这个就是输出打印的内容了。不过,最后那个\n是什么?自己先百度下?

今后,我们会用下面的形式表达代码及其输出:

print("Hello, world")            // => "Hello, world\n"

有了打印能力,你将能更好的调试你的代码,方便查看变量值等信息。

数字与四则运算

我们可以尝试输出数字,例如:

print(1)
print(1.1)

那我想进行数值运算怎么办呢?我们直接使用加减乘除就可以了,比如:

1+1     // => 2
4-3     // => 1
4*7     // => 28
6/2     // => 3

上面每行都是一个表达式,表达式有一个值。

但是上面的表达式太紧凑了,看起来太累,我们可以这样写:

1 + 1
4 - 3
4 * 7
6 / 2

是不是看起来舒服一点呢?不过如果只有运算符的一侧有空格,是不符合语法规范的,如:

1 +1  // 错
4- 3  // 错

整数与浮点数

尝试下面的表达式:

5 / 2       // => 2

为什么呢?计算机也会算错吗?

这是因为Swift认为52都是整数,那么这个表达式的值也应该是一个整数,Swift只取这个表达式值的整数部分,也就是2

那如果我想要计算出带有小数的更精确的值呢?我们可以这样:

5.0 / 2.0       // => 2.5

我们这就告诉了Swift,这两个数是带有小数的,也就是浮点数,计算精度会提高。

余数

如果我想知道整数除法运算的余数呢?这个运算可以叫取余,或者叫取模

5 % 2       // => 1

运算符优先级

在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性[1]

很吓人?我觉得也是。

不过不用怕,其实就和你上学的时候学的四则运算法则差不多,更多其他的规则,我写在这里,难度你会背吗?用到了自己去查吧。比如这里:Swift 运算符

数学公式

Swift也提供给你了一些常用的数学公式,比如正余弦,平方根,最值等运算:

sin(45 * Double.pi / 180)    //正弦 => 0.7071067811865475
cos(0)    // 余弦 => 1
sqrt(4)   // 平方根 => 2
max(10, 4)  // 最大值 => 10
min(10, 4)   // 最小值 => 4

写有意义的的代码

目前为止,我们并没有觉得我们的代码有什么了不起的功能。但是将来,我们会用其他一样简单的语句,搭建出各类App。

为了使我们以后更方便的使用自己的代码,我们会给这些数据赋予有意义的名字。同时,这些名字是和某种数据类型关联在一起的,比如上文中我们遇到的整数就是一种数据类型。

有意义的名字

观察下面代码:

let numberApple: Int = 10
let numberOrange: Int = 8
let pi: Double = 3.14159

var numberWorker: Int = 5
var height: Double = 1.82

如果不认识英语,可以查字典。
你能大概猜出来每句话什么意思吗?应该不难是吗?比如第一句是“苹果数量为10”等等。


假设你看到了下面的代码:

let a: Int = 10
let b: Int = 8
let c: Double = 3.14159

var d: Int = 5
var e: Double = 1.82

你能看出来每句话什么意思吗?第一句是“a等于10”?那么你告诉我,“a“是什么?也许你会说,我可以加注释,比如写成这样子的就好了:

let a: Int = 10  // number of apple
let b: Int = 8   // number of Orange
let c: Double = 3.14159  // pi

var d: Int = 5  //number of worker
var e: Double = 1.82  // height

那你为什么不直接写成最开始的那种形式呢?


请记住:任何情况下,起一个有意义的名字!

如果你的代码可以做到不使用任何注释,就能让别人大致看懂,是不是就具有了很好的可读性?

起名格式建议

注意我们的名字:numberApple。有没有发现number小写,Apple首字母大写。

Swift语言建议,对于常量变量来说:

  • 首字母小写
  • 如果名字由几个单词组成,第一个单词后的单词首字母大写(驼峰格式)。
  • 如果有一个单词是缩写,那么整个缩写使用相同大小写。(比如urlDescription和sourceURL)

等等,什么是常量变量

常量和变量

常量,值不可变。
变量,值可变。

我们还是看刚才的代码,我们来一步步分析:

let numberApple: Int = 10

我们试着这样读出来:let the number of apple, which is of type Int, to be 10。(令苹果数量10,而且数据类型为整型

这句话声明了一个常量,其值为10。这个常量的名字是numberApple
let指定了这个值为常量。
:Int指定这个值数据类型为整型。


那么类似的

let numberOrange: Int = 8

声明一个名为numberOrange的常量,数据类型为整型(即上文所说的整数),赋值为8


let pi: Double = 3.14159

声明一个名为pi的常量,数据类型为双精度浮点型(即上文所说的浮点数的一种),赋值为3.14159
关于数据类型的更多细节,请参考下一章,或者网络资源:Swift 数据类型


类似的,下面代码,与上面不同的仅仅是let变成了var

var numberWorker: Int = 5
var height: Double = 1.82

var开头,则说明这个值是一个变量


我们试着改变常量和变量的值。

numberApple = 3    // 错
numberOrange = 5   // 错
pi = 2.2           // 错

numberWorker = 6  // 没问题
height = 1.44     // 没问题

上面的“=”是赋值运算符

通过点击代码前面的红点,我们可以看到后面红底黑字的提示说明错误原因,下面白底黑字也是同样的错误原因,同时还有蓝底白字的修改建议。

我们发现,一旦声明了一个常量,那么它的值是不能改变的,但是变量可以。所以上面建议我们将numberApple的声明由常量变为变量:

let numberApple: Int = 10

变为:

var numberApple: Int = 10

通常,如果你认为一个值是不会变的,那么将其声明为常量。比如地球的半径,成年人的身高等。
如果是会变的,那么声明为变量。比如你的年龄,公司人数等。

递增和递减

尝试下面代码:

var counter: Int = 0

counter += 1    // =>  counter = 1

counter -= 1    // => counter = 0

开始,counter为0,通过使用递增操作符+=counter变为了1。又通过递减操作符-=,变为了0。其实,上面代码等同于:

var counter: Int = 0

counter = counter + 1    // =>  counter = 1

counter = counter - 1    // => counter = 0

类似的,试试 *=/= 有什么效果吧。

如果你和大多数人一样懒的话,我相信你会喜欢上这几种操作符的。

总结

  1. 注释的两种方法:///*...*/
  2. 一定要有一个有意义的名字
  3. 数据类型
  4. 运算符
  5. 常量和变量

下一步

我们知道了怎么表达有两个苹果,但是怎么表达我的名字叫小明呢?






  1. http://www.runoob.com/swift/swift-operators.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • 关于 Swift 重要这个文档所包含的准备信息, 是关于开发的 API 和技术的。这个信息可能会改变, 根据这个文...
    无沣阅读 4,270评论 1 27
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,771评论 1 10
  • 本章将会介绍 模块和源文件访问级别访问控制语法自定义类型子类常量、变量、属性、下标构造器协议扩展泛型类型别名位运算...
    寒桥阅读 871评论 0 2
  • ♊ 双生​ 又是一个稀里哗啦的雨天,雷吉睁开睡眼,看见龙尼正骑在艾玛身上。 雷吉没有起身。如果是别人这么做,他会莫...
    陈稳阅读 358评论 0 2
  • 一条古老的街道 挂满铃铛的树 是两排擎向天空的手掌 枝叶端庄典雅垂下长发 那是皇宫的婢女 眼睛狭长似有一丝妩媚 端...
    念今尘阅读 564评论 0 51