造物之初

上一篇:Hello World
当前篇:造物之初
下一篇:基础运算

程序员就像是一个小小的造物主,我们使用有限的可用资源来创造我们想要的东西,并赋予它们一些属性,能力和规则来完成我们的任务,这一切都在手指一敲而就间

接下来我会尽可能以代码框的方式来展示代码,而非贴图,贴图占用资源,不方便复制,新手还是要多多动手敲,不要养成复制粘贴的习惯,老司机就随意了


print("Hello World!")

这是第一课中的 Hello World 程序的代码

print 是标准库提供的一个函数(功能),根据函数名称大概能理解是打印的意思,它的功能就是在调试框中输出指定信息

print 函数后面的括号表示函数的参数,在这里指要输出的信息,双引号表示字符串类型

因此这句代码的完整意思就是:将字符串 Hello World! 输出到调试框中

几乎所有编程语言教材的第一个程序都是这个样子,因为对于新手来说,最直观的就是能够看到程序运行的结果,调试框是新手使用的第一个查看运行结果的工具,Playground已经自动为我们输出了程序运行的全部过程,只不过我们最终会抛弃Playground,所以学会在黑框中输出你想看的运行结果还是有必要的


生命周期

上面的那一行代码,我们已经完成了一次造物,我们创建了一个字符串,并把它输出到黑框中,然后代码运行结束,造物主的任务完成,字符串的生命结束,被阎王爷收回去了。下面是稍微准确一点的描述

计算机需要分配一段运行内存来表示我们创建的东西,当我们创建的东西已经不再需要的时候,就需要释放这一段运行内存,要不然运行内存很快就会被占满,导致应用无法正常运行,在一些古老的编程语言中,需要我们通过代码手动释放创建的东西,而现代的编程语言几乎都有自动释放的特性,在Swift中我们叫 ARC自动内存管理 ,其他很多语言叫 自动垃圾回收

给造物起名字

如果我们要在多行代码中使用我们创建的那个字符串,我们需要给字符串起一个名字,要不然它就只能活过一行代码

let string: String = "Hello World!"
print(string)
print(string)

现在我们给创建的字符串起名字为 string ,就可以输出两次了,想输出多少次都可以,只要我们创建的东西需要在不同的地方使用,就必须为它其一个名字

let 是Swift语言的一个关键字,它是具有特殊作用的限定词,起名字的时候要避免使用关键字,string 就是我们给字符串起的名字,之后代码中使用 string 都表示这个字符串,冒号表示它的类型,任何造物都属于某一个类型,就像上帝创造了人类,那么人类就是我们共同的类型,程序中创建的东西也是一样的

常量与变量

给造物起名字是一种不准确的说法,下面我用专业术语来描述,那就是 常量变量

我们创建的东西往往需要在不同的地方去使用,因此我们需要有一个标记指向创建的实例,我们称之为 常量变量常量let 表示,变量var 表示,常量 一旦赋值就不可更改,变量 可以任意更改其赋值

上一段代码我们换一种解释:声明一个类型为字符串的常量 string ,创建一个字符串 Hello World! 赋值给常量 string

为了方便理解,我们可以把代码拆成两步,就像下面这样:

let string: String
string = "Hello World!"
print(string)

然后把代码修改成下面这样:

let string: String
string = "Hello World!"
string = "Hello ZhangQi!"
print(string)

这时会发现编译器报错:Immutable value 'string' may only be initialized once,也就是我们刚刚说的常量一旦赋值不可更改,如果我们需要更改其赋值,就需要把 string 声明为变量:

var string: String
string = "Hello World!"
print(string)
string = "Hello ZhangQi!"
print(string)

这样我们就能在调试框中看到 string 被先后赋予了不同的值,同时需要注意,当我们创建了一个新的字符串赋值给 string 时,其旧的值就失去了引用,生命周期结束

从这个角度来看,起名字的描述就不准确了,实际上常量和变量只是一种 引用 或者 指向,可以形象地理解为箭头,我们可以根据箭头找到其实例,当没有任何一个箭头指向某个实例时,实例的生命周期结束,被自动释放

声明变量和常量时我们指定了其类型,不能够随意的赋值,只能赋值对应的类型实例,像下面这样编译器就会报错:

let string: String = 1

生命周期属于进阶知识,如果不好理解可以暂时不用纠结,包括引用这样的概念也属于进阶知识,对于理解代码起到很重要的作用,在学习的过程中我们会一步步加深理解

几个基础数据类型

在开始下一课之前,我们先来认识几个最常用的类型,前面我们用到了一种类型 String ,也就是字符串

字符串类型

字符串可以用插值法来替换内容,语法就是 \()

let name = "ZhangQi"
print("Hello \(name)!")
// Hello ZhangQi!

字符串还可以通过加法来合成新的字符串

let name = "ZhangQi"
let hello = "Hello " + name
print(hello)

整数类型

let a: Int = 1
let b: Int = 2
let c: Int = a + b
print(c)

Int 是我们最常用的整数类型,它在不同的操作系统下有不同的取值范围

在32位系统中,Int 实际上表示 Int32,其取值范围是 -2147483648~2147483647 ,刚好2的32次方个取值

在64位系统中,Int 实际上表示 Int64,其取值范围是 -9223372036854775808~9223372036854775807,刚好2的64次方个取值

同时整数类型还有一些变体,主要区分有符号整数和无符号整数以及整数的位数,下面举一个无符号整数类型(无符号的意思就是非负数)

UInt32 表示无符号32位整数,其取值范围是 0~4294967295,刚好也是2的32次方个取值

其他的整数类型依次类推,整数类型总体上有下面这些:

Int8 , UInt8 , Int16 , UInt16 , Int32 , UInt32 , Int64 , UInt64 , Int , UInt

绝大多数情况下,我们使用 Int 类型就够了

浮点数类型

浮点数也就是我们说的小数,Swift提供两种浮点数,FloatDouble ,两者的区别跟整数类型区别类似,Double类型表示的范围更广,小数点后的位数更多,更加精确,图方便,我们大部分时候使用 Double 就够了

let a: Double = 0
let b: Double = 3.1415926
let c: Double = a + b
print(c)

布尔类型

Bool 类型也就是数学中的真假逻辑,它只有两个取值,要么真,要么假,真用 true 表示,假用 false 表示

let happyEveryDay: Bool = true
let eatFatFat: Bool = false

命名规范

通常情况下,命名的第一个单词首字母小写,之后每一个单词的首字母大写,不能用特殊字符,中间不允许有空格,而类型名字首字母也要大写

上一篇:Hello World
当前篇:造物之初
下一篇:基础运算

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

推荐阅读更多精彩内容