万物科技 学,以致用

3. 数字

2017-03-04
Geng

现在你已经做好了编程的前期工作,我们正式开始吧。

这一章中,你将学习怎么样用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。这个常量的名字是numberApplelet指定了这个值为常量。 :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 


下一篇 4. 更多类型

Comments

你可以请我喝喝茶,聊聊天,鼓励我

Wechat Pay
wechat

Thanks!