Swift Tutorial(swift 教程) 1: Welcome to Programming

Swift Tutorial(swift 教程) 1: Welcome to Programming,第1张

概述更新于4/13/15:下面文章是基于 Xcode 6.3 / Swift 1.2。 入门指南 首先要下载app开发软件----xcode。可以到apple app store上免费下载。 确保下载xcode最新版本,xcode6及以上版本才支持swift。 安装xcode后,打开并点击 Get started with a playground. playground非常便于学习swift编程。你

更新于4/13/15:@H_301_2@下面文章是基于Xcode 6.3 / Swift 1.2@H_301_2@。@H_301_2@

入门指南@H_301_2@

首先要下载app开发软件----xcode。可以到apple app store上免费下载。@H_301_2@


@H_301_2@

确保下载xcode最新版本,xcode6及以上版本才支持swift。@H_301_2@

安装xcode后,打开并点击@H_301_2@Get started with a playground@H_301_2@.@H_301_2@


@H_301_2@

@H_301_2@playground非常便于学习swift编程。你不需要像iPhone app一样去运行playground,它对于你学习swift的基础语法非常有帮助。@H_301_2@

@H_301_2@@R_502_6889@设置为MyPlayground,platform设置为ios,然后点击next,保存在任意地方。@H_301_2@


@H_301_2@

playground的介绍@H_301_2@

进过前面的 *** 作后,你会发现playground已经创建了3行代码:@H_301_2@

@H_301_2@

// Playground - noun: a place where people can play@H_301_2@import@H_301_2@ UIKitvar@H_301_2@ str =@H_301_2@ "Hello,playground"@H_301_2@

以//开头的第一行是注释。@H_301_2@

你可以将第二行import UIKit暂时理解为一群smart folks聪明人在apple上写的一大串代码。目前你只需要知道这行对于你后面编写代码是有用的就ok。@H_301_2@

第三行代码@H_301_2@

 是你目前需要关注的。表示创建了一个名为 @H_301_2@ str@H_301_2@的变量,其值为 Hello,playground .在窗口的右边,你会看到xcode一直显示着该变量的值。@H_301_2@  


@H_301_2@@H_301_2@

可以试着修改下变量str的值为@H_301_2@"Look what I can do!",如下:@H_301_2@@H_301_2@

@H_301_2@@H_301_2@

"Look what I can do!"@H_301_2@

这时你会发现窗口右边显示的内容也变成了@H_301_2@@H_301_2@"Look what I can do!",恭喜,你刚刚进行了编程工作。@H_301_2@


@H_301_2@

你的个人计算器

接下来再来看看我们还能做些什么。在前面的文件末尾,试试输入一个基本的数学算术@H_301_2@@H_301_2@2 + 2@H_301_2@,然后回车,playground将在窗口的右边显示出这个等式的值。


很酷吧!你还可以做其他数学运算。@H_301_2@

挑战一下:利用playground计算123*456的值@H_301_2@@H_301_2@

在你的playground里输入@H_301_2@@H_301_2@

123@H_301_2@*@H_301_2@456@H_301_2@
@H_301_2@

在窗口的右边立马就能显示出结果:@H_301_2@

56@H_301_2@,088


@H_301_2@

接下来我们在playground上做更多的编程。除了保留import UIKit这一条语句,其他的都先删掉。 变量@H_301_2@

接下来,我们来做一些有关变量的 *** 作。@H_301_2@

采用下面的语法来创建一个变量:@H_301_2@

var@H_301_2@ yourVariable@R_502_6889@:@H_301_2@ yourType =@H_301_2@ yourInitialValue yourVariable@R_502_6889@ : 变量名,你可以任意取名,例如str或age等@H_301_2@

yourType:变量类型,例如Stringor@H_301_2@Int@H_301_2@
@H_301_2@@H_301_2@

yourInitialValue:@H_301_2@初值。@H_301_2@

举个例子,将下面的代码加到playground的尾部:@H_301_2@

@H_301_2@

var@H_301_2@ str:@H_301_2@ String@H_301_2@ "Look what I can do!"@H_301_2@var@H_301_2@ ageInt@H_301_2@ =@H_301_2@ 18@H_301_2@

第一行的代码中,创建了一个名为str的变量,其类型为String,@H_301_2@初始值为“Look what I can do!”@H_301_2@

第二行,创建了一个类型为Int的变量age,初值为18@H_301_2@

下面简单介绍下不同的类型:@H_301_2@

@H_301_2@

Types类型 如下是swift提供的一些基本类型:
Int@H_301_2@– 整数 Double@H_301_2@– 浮点数 Bool@H_301_2@– 布尔型,值为true,or false String@H_301_2@– 字符串 输入下面的代码进行练习,观察窗口右边的显示结果:

@H_301_2@

var@H_301_2@ luckyNumber7@H_301_2@var@H_301_2@ costOfCandyDouble@H_301_2@ 1.25@H_301_2@var@H_301_2@ hungryBool@H_301_2@ =@H_301_2@ true@H_301_2@var@H_301_2@ @R_502_6889@"Ryland"@H_301_2@
创建一个变量后,可以修改其值,如下代码:

@H_301_2@

@R_502_6889@ "Ry"@H_301_2@
var@H_301_2@ favoriteGame"Mario Kart"@H_301_2@favoriteGame "Super Smash bros."@H_301_2@

@H_301_2@

Constants常量 常量用let来创建,其值是不能修改的。编写代码时,如果可以尽可能的使用常量而非变量,因为编译器不用计算值发送变化的可能性,程序会运行的更快。任何一个数据类型都可以被定义为一个常量或是变量。

let@H_301_2@ life42@H_301_2@let@H_301_2@ pi3.14@H_301_2@let@H_301_2@ cantouchThisfalse@H_301_2@let@H_301_2@ captain"Kirk"@H_301_2@ 如果你对一个常量的值进行修改,如下代码,那么代码的左边会出现一个红色的感叹号,告诉你出错了!

captain "Hook"@H_301_2@ 点击红色的感叹号,会出现 Cannot assign to ‘let’ value ‘captain’@H_301_2@ 不能给常量重新指定值的消息。一旦你用let定义了一个常量,就表示这个常量的值是不能改变的。@H_301_2@

删除之前出错的代码,出错告警就会消除。@H_301_2@@H_301_2@

Inferred TyPing隐式类型推断

swift可以根据声明的变量或常量的信息自动推断出数据类型,只要信息足够,而不用每次都指定数据类型。如此不仅效率高,而且代码更简明和易读

尝试将前面的@H_301_2@var luckyNumber: Int = 7替换为如下:@H_301_2@@H_301_2@

var@H_301_2@ luckyNumber 7@H_301_2@

虽然现在看起来没有什么很大的变化,但是在运行的时候会帮你节省很多类型转换的工作。

但是要记住,你必须提供足够的信息才能确保隐式类型推断。比如,你想将luckyNumber设置为Double,你必须给其赋值为7.0(确保所赋的值是浮点数而非整数7).

可以进行如下尝试:

var@H_301_2@ age 18@H_301_2@var@H_301_2@ costOfCandy var@H_301_2@ hungry var@H_301_2@ @R_502_6889@ "Ryland"@H_301_2@@R_502_6889@ "Ry"@H_301_2@var@H_301_2@ favoriteGame "Super Smash bros."@H_301_2@let@H_301_2@ life let@H_301_2@ pi let@H_301_2@ cantouchThis let@H_301_2@ captain "Kirk"@H_301_2@let@H_301_2@ favoriteNumber 3@H_301_2@

Comparison Operators比较运算符

playground除了能进行前面所介绍的数学运算外,也能比较两个值,基本的比较运算符如下:

>@H_301_2@大于 <@H_301_2@小于 ==@H_301_2@等于 >=@H_301_2@大于或等于@H_301_2@ <=@H_301_2@@H_301_2@小于或等于@H_301_2@ &&@H_301_2@与运算 ||@H_301_2@或运算

尝试添加如下代码:

let@H_301_2@ batmanCoolness 10@H_301_2@var@H_301_2@ supermanCoolness 9@H_301_2@var@H_301_2@ aquamanCoolness 1@H_301_2@
batmanCoolness < aquamanCoolnesssupermanCoolness >8@H_301_2@batmanCoolness ==@H_301_2@ (@H_301_2@aquamanCoolness +@H_301_2@ supermanCoolness)@H_301_2@batmanCoolness > aquamanCoolness &&@H_301_2@ batmanCoolness )@H_301_2@batmanCoolness < supermanCoolness || aquamanCoolness < supermanCoolness
var@H_301_2@ spIDermanCoolness 7@H_301_2@(@H_301_2@spIDermanCoolness +@H_301_2@ aquamanCoolness)@H_301_2@ > supermanCoolnessspIDermanCoolness ==@H_301_2@ 7@H_301_2@ &&@H_301_2@ aquamanCoolness 2@H_301_2@

playground在窗口的右边会计算出相应的值为true或false.

参与与运算 (&&)的 两个值必须都为true,其结果才为true. 参与或运算 (||)的两个值只要其中一个为真,其结果为真,如果第一个值已经为true,那就没有必要关心第二个值。 .

If/else statements

在if/else语句中,当判断条件为真时才会执行{}里面的内容,条件为假时不执行。如下代码:


if@H_301_2@ (@H_301_2@batmanCoolness > spIDermanCoolness)@H_301_2@ {@H_301_2@  spIDermanCoolness =@H_301_2@ spIDermanCoolness -@H_301_2@ 1@H_301_2@}@H_301_2@else@H_301_2@ (@H_301_2@batmanCoolness >=@H_301_2@ spIDermanCoolnesselse@H_301_2@ +@H_301_2@ }@H_301_2@

上面的代码中,如果Batman更酷些,那SpIDerman的酷值就是减一,相反如果SpIDerman更酷些,那SpIDerman的酷值就会加一。@H_301_2@@H_301_2@@H_301_2@@H_301_2@

你从playground中可以看到SpIDerman的酷值降到6.@H_301_2@@H_301_2@@H_301_2@@H_301_2@@H_301_2@

另外,你会发生上面代码块中的else if都没有执行过,即使它的判断条件时true,那是因为第一个if的判断条件已经为true,所以后面的跳转分支就不用管了。

尝试输入下面的代码,看下结果:

if@H_301_2@(@H_301_2@supermanCoolness < spIDermanCoolness)@H_301_2@  {@H_301_2@  supermanCoolness =@H_301_2@ supermanCoolness 1@H_301_2@   spIDermanCoolness (@H_301_2@supermanCoolness ==@H_301_2@ spIDermanCoolness1@H_301_2@  spIDermanCoolness else@H_301_2@  }@H_301_2@
Simple Functions简单函数

函数就是执行特定任务的代码块.例如,函数 printMyFavoriteSnack()可能就只是打印出字符串"Pringles".

你可以编写并使用自己的函数,也可以调用其他人编写的函数。例如, Apple提供了很多非常有用的内部库函数。你可以在你的app中使用。

比如@H_301_2@@H_301_2@println() 函数. 当你调用该函数时,程序会在终端打印出里面的内容.@H_301_2@

输入如下代码,你在窗口的右边会看到“Hello,World”@H_301_2@:

println@H_301_2@(@H_301_2@)@H_301_2@

尝试输入下面的代码,看下打印的结果

"Ry is awesome"@H_301_2@)@H_301_2@(@H_301_2@batmanCoolness)@H_301_2@

String Interpolation字符串的插入 字符串插入可以将字符串和变量的值在一条语句中打印出来,如下:
var@H_301_2@ apples 5@H_301_2@"Sally has \(@H_301_2@apples) apples"@H_301_2@)@H_301_2@
\(@H_301_2@apples - 5) apples"@H_301_2@)@H_301_2@
使用格式 \(variable @R_502_6889@) 输入下面的代码,看下结果:@H_301_2@@H_301_2@

var@H_301_2@ johnsGrade 95@H_301_2@var@H_301_2@ samsGrade 82@H_301_2@(@H_301_2@johnsGrade < samsGrade{@H_301_2@  "\(@H_301_2@johnsGrade) is less than \(@H_301_2@samsGrade)"@H_301_2@)@H_301_2@(@H_301_2@johnsGrade > samsGrade\(@H_301_2@johnsGrade) is greater than \(@H_301_2@johnsGrade) is equal to }@H_301_2@
While Loops while循环

while循环是类似于if /else的另一种流程控制,同样也需要条件为true才能执行.不同的是,只要执行条件一直为true,那么{}中的代码块就会继续被执行。

var@H_301_2@ secondsleft 3@H_301_2@while@H_301_2@ (@H_301_2@secondsleft > 0@H_301_2@(@H_301_2@secondsleft)@H_301_2@  secondsleft =@H_301_2@ secondsleft "Blast off!"@H_301_2@)@H_301_2@

确保你的循环流程能在某个点停止。不要编写无限循环的流程控制,不然会导致各种问题,而且你的程序除了这个流程,其他什么也不能做。

上面的代码运行后,窗口的右边会显示@H_301_2@@H_301_2@(3 times)@H_301_2@,告诉你这条语句运行了几次。同时,你可以在屏幕的最上面选择@H_301_2@VIEw\Assistant Editor\Show Assistant Editor,@H_301_2@打开另一个窗口Assistant Editor@H_301_2@@H_301_2@来看具体的运行结果。@H_301_2@

var@H_301_2@ donutsleft 6@H_301_2@while@H_301_2@(@H_301_2@donutsleft > "You have \(@H_301_2@donutsleft) donuts left"@H_301_2@)@H_301_2@ donutsleft =@H_301_2@ donutsleft 1@H_301_2@ "You eat one donut"@H_301_2@"You are all out of donuts :("@H_301_2@)@H_301_2@
Break Statement break语句

在循环语句中,比如while循环,可以通过break语句在特定的事件中跳出循环。.

var@H_301_2@ cokesleft var@H_301_2@ fantasleft 4@H_301_2@(@H_301_2@cokesleft > \(@H_301_2@cokesleft) Cokes left."@H_301_2@)@H_301_2@  cokesleft =@H_301_2@ cokesleft (@H_301_2@cokesleft <=@H_301_2@ fantasleft{@H_301_2@    break  }@H_301_2@"You stop drinking Cokes."@H_301_2@)@H_301_2@

在上面的例子中,你希望只要还有cofe,就可以一直drinking Coke 。然而当你知道冰箱里有汽水时,你可以决定当cofe的数量小于或等于汽水时,选择去喝汽水。当这个条件发生时,你就退出了循环,也就停止了喝咖啡。@H_301_2@

var@H_301_2@ goofOffTime var@H_301_2@ bossComing 0@H_301_2@(@H_301_2@goofOffTime > "Goofing off!"@H_301_2@)@H_301_2@  goofOffTime =@H_301_2@ goofOffTime 1@H_301_2@  bossComing =@H_301_2@ bossComing (@H_301_2@goofOffTime ==@H_301_2@ bossComing"Done goofing off."@H_301_2@   
Continue Statement continue语句

continue语句和break语句非常相似,区别在于,continue不是退出整个循环,只是跳出当前这一轮循环,程序回到循环的开始处,然后进行条件的判断是否执行下一轮循环。.

var@H_301_2@ numbers (@H_301_2@numbers <10@H_301_2@(@H_301_2@numbers 9@H_301_2@{@H_301_2@    numbers =@H_301_2@ numbers 1@H_301_2@    continue@H_301_2@  }@H_301_2@  (@H_301_2@numbers)@H_301_2@  numbers }@H_301_2@

"List of World Wars:"@H_301_2@var@H_301_2@ ww 1@H_301_2@(@H_301_2@ww <5@H_301_2@(@H_301_2@ww 3@H_301_2@ || ww 4@H_301_2@{@H_301_2@    ww =@H_301_2@ ww "World War \(@H_301_2@ww)"@H_301_2@)@H_301_2@  ww "That's the beauty of World War V,Lois. It's so intense it skips over the other two. - Peter Griffin"@H_301_2@)@H_301_2@
. Optionals可选性

有时候会出现不确定变量是有值还是空值的情况。空值表示该变量赋值为nil.

可选性代表变量要么表示为一个值,要么为nil:

var@H_301_2@ optionalNumberInt@H_301_2@? 5@H_301_2@optionalNumber nil@H_301_2@

符号?表示该值是可选的. :

if@H_301_2@ let@H_301_2@ number =@H_301_2@ optionalNumber

if let等同于if.

=@H_301_2@ optionalNumber  "It is a number"@H_301_2@"It is not a number"@H_301_2@}@H_301_2@

@H_301_2@
Conversion Between Data Types数据类型的转换

Optionals 在变量的类型转换上很有用. 下面的例子是将String转换为Int.

var@H_301_2@ languagesLearned"3"@H_301_2@var@H_301_2@ languagesLearnednum=@H_301_2@ languagesLearned.toInt(@H_301_2@ 这里声明了一个初值为@H_301_2@"3"的字符串变量@H_301_2@languagesLearned,以及一个可选变量languagesLearnednum并调用函数toInt().给其赋初值 。Methods are very similar to functions likeprintln()that you learned earlIEr,except that they are a part of aclass. You will learn more about that later.

toInt()同println()@H_301_2@方法一样都是已经实现了的,是一个类的一部分,这个在后面会学到更多。 该方法是将StringInt类型输出. 之所以将languagesLearnednum声明为可选性,是因为它的值有可能是nil. 比如你要转换的字符串不包含数字,而是像"Hello,World".

输入下面的代码:

let@H_301_2@ num =@H_301_2@ languagesLearnednum   

var@H_301_2@ tutorialTeam"55"@H_301_2@var@H_301_2@ editorialTeam 23@H_301_2@var@H_301_2@ tutorialTeamNum=@H_301_2@ tutorialTeam.toInt)@H_301_2@let@H_301_2@ numTutorial =@H_301_2@ tutorialTeamNum  (@H_301_2@numTutorial > editorialTeam{@H_301_2@    \(@H_301_2@numTutorial) is greater than \(@H_301_2@editorialTeam)"@H_301_2@)@H_301_2@  (@H_301_2@numTutorial < editorialTeam\(@H_301_2@numTutorial) is less than \(@H_301_2@numTutorial) is equal to "InvalID entry"@H_301_2@}@H_301_2@





http://www.raywenderlich.com/75919/learn-to-code-ios-apps-with-swift-tutorial-1 @H_301_2@

总结

以上是内存溢出为你收集整理的Swift Tutorial(swift 教程) 1: Welcome to Programming全部内容,希望文章能够帮你解决Swift Tutorial(swift 教程) 1: Welcome to Programming所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1085125.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)