C语言Swift 了解(1)

  Apple取消了oc的指针以及任何非安全的访问的以,舍弃的smalltalk语法,全面改变吧点语法,提供了近似java的命名空间
范型 重载;

  首先我们了解一下Swift这宗语言。Swift就比如C语言一样,使用变量来拓展仓储并通过变量名来涉及值。在swift中广大的动着不可变的变量,也便是我们常常说的常量。但是Swift远远比C语言的常量强大。记住这里说之是比C的常量强大,并无是比较C语言强大。这点而明掌握。在Swift中如果你得处理的价未需变更,那以常量的得吃我们的代码更清晰地发表我们的用意和逻辑。

  除了我们耳熟能详的门类,Swift还加了Objective-C中绝非的高阶数据类型比如元组(Tuple)。元组可以被您创造或者传递一组数据,比如当函数的回值经常,我们可以据此一个元组可以回来多独价值

  Swift增加了可选(optional)类型,用于拍卖值缺失之状。所谓的可选类型,接触了OC的必比较清楚一下。可选类型像是Objective-C中以的nil,但是其可以当其余项目及,不仅仅是类似!Swift有了而选类型的是比OC中的nil指针更加安全吗再也兼具表现力。它是Swift许多劲类型的根本片段。

 

常量和变量

常量和变量必须于行使前声明,用let来声称常量,用var来声称变量

例如:

1 let max = 10;
2 
3 var min =1;

 

对象(Objects)

变量也得象征对象,对象的档次就是看似的名字。记住,类就是这目标的蓝图,类里富含了对象有的性能和行为。
脚这行代码,用var表示即是一个变量,用fastCar当变量名,冒号后声称是变量是目标类型,在这里,就是Car,最后,用相当号表示是变量的初始值是一个初的车对象:

var fastCar: Car = Car()

 

 

 

字符串中之变量(Variables in Strings)

用字符串插入(string
interpolation),可以一直以变量中多字符串。字符串插入这个术语是借助当一个字符串里以占位符来产生一个字符串。程序运行后,这些占位符就会直接调用。在这边,字符串是为此对引号表示的,那么占位符是用\()意味着的,两单括号中凡是得插入的字符串。字符串插入这个法可将一个非字符串的变量方便地变为字符串类型:

1 let seatsPerRow = 25
2 let numberOfRows = 25
3 var seatsString = "In the theater, there are \(numberOfRows) rows and \(seatsPerRow) seats in each row."   //In the theater, there are 15 rows and 25 seats in each other row.

 

类型推断(Type Inference)

呢各个一个变量和常量声明类型可是一桩体力活,苹果公司之工程师一直从事为被开发者的做事再次自在。基于你提供的相当于号右侧边的价,Swift可以团结看清项目,也即是兼备类型推断的力量,这使声明变量更加便于。请见下的例子:

1 var numberOfYears = 30
2 let name = "Steve"
3 let isMale = true
4 var bankAccountBalance = 1034.20

 

冒号和冒号后面的品种就无欲了,因为Swift可以根据对等号右侧边的值来推论类型,然后自动设定变量的路。这样会省去成千上万岁月,也能给代码更简洁。

 

路标注:

当我们声明常量或者变量的时节可增长项目标注,说明常量或者变量中设存储的价值的种。如果要是补充加类型标注,需要在常量或者变量名后面长一个冒号和空格,然后加上项目名称。

例如:

 1 var welcomeMessage:String 

 

于welcomeMessage中我们得以知道啊:”声明一个类型也String,名字也welcomeMessage的变量”

花色也String的意思是足以储存任意String类型的价

welcomeMessage = “Hello”

俺们在Swift中可根据自己爱的字符作为常量和变量名,包括Unicode字符!

例如:let $ = 3.3333,let你好=”Hello word!”,let?? =“dogcow”

在意:常量与变量名不能够包含数学符号,箭头,保留的(或者非法的)Unicode码位,连线以及制表符。也不可知为数字开,但是足以于常量与变量名的其余地方含有数字。

 

瞩目:如果我们得运用Swift中保存重要字相同之号作为常量或者变量名,我们可以用反引号(^)将重大字包围的办法以那看成名字下,但是无论如何我们且应有避免使用主要字作为常量或变量名。

 

集合(Collection)

  在某些情况下,有必要将过多变量或常量更好地组织于一块,Swift提供2种会合类型来保存及团伙这些变量。

数组(Arrays)

  数组(Array)是本聚体顺序存储多只变量的器皿。数组可以储存几乎无以复加的素(item),同时每个元素还有一个数组下标,准确标明此元素在勤组被之职位。可以如此声明一个数组:

1 var names: [ String ] = [ "Steve", "Jeff", "Andy", "Andrew", "Cole", "Mike", "Mikey" ]

 

  开头还是var,接着是冒号,然后是方括号,方括号里是多次组的品种,等号的下手,用方括号括起来有的数组元素,里面每个数组元素用逗号分开。
每当Swift中,数组中有着的元素必须是同的品类,这以为着一个数组能积存所有的字符串,如上面的例证,但是不能够积存整型和字符串2种不同之花色的要素。数组只能存储同样类型的变量。
对一个既定的往往组,Swift可以自行判断出类型,没有必要专门写有数组的类别,所以地方的数组也得描绘成这么:

1 var names = [ "Steve", "Jeff", "Andy" ]

 

 

 

为堪于您的数组增加一个数组:

var names = [ "Steve", "Jeff", "Andy", "Wally" ] 
var parents = [ "Mike", "Adam", "Nick" ]
names = names + parents           // [ "Steve", "Jeff", "Andy", "Wally", "Mike", "Adam", "Nick" ]

 

 

词典(Dictionaries)

数组不是绝无仅有的聚众类型,词典也可以储存多只变量,用键(Key)和价值(value)将大半个变量组织于共。键值的劳作原理同您书架上的牛津大词典类似,键(Key)是你如果摸的单词,而值(value)是这单词的释义。词典是无序存储的,所以只好使用键(key)来博有值(value),例如:

1 var homeruns : [ String : Int ] = [ "Posey" : 24, "Pagan" : 19, "Pence" : 15 ]

 

于这事例中,有三只键(keys):"Posey" , "Pagan" , "Pence",每个键都起对应的值。提高有关的键,写于中括号中,就可知获相呼应的价值:

homeruns[ "Posey" ] // 24

 

充实一对准键值:

var homeruns : [ String : Int ] = [ "Posey" : 24, "Pagan" : 19, "Pence" : 15 ]
homeruns[ "Sandoval" ] = 10    // [ "Posey" : 24, "Pagan" : 19, "Pence" : 15, "Sandoval" : 10 ]

 

 

 

将键对应的价设置也空(nil),就足以去除这对准键值。nil是空值,我们将在段结束的时段还尖锐之牵线nil。删除键值方法:

 

1 homeruns [ "Sandoval" ] = nil     //   [ "Posey" : 36, "Pagan" : 19, "Pence" : 15 ]

 

 

出口常量和变量

在Swift中print(_:separator: terminator:)函数来输出当前常量或变量的价值:

横流:这为是别OC语言之远在

Swift用字符串插值(string
interpolation)的章程把常量名或者变量名当占位符加入到长字符串中,Swift会就此当下常量或变量的价替换这些占位符。将常量或变量名放入圆括号丁,并在开括号前下反斜杠将那转义:

1 print("The current value of friendlyWelcome is \(friendlyWelcome)")     //输出"The current value of friendlyWelcome is Bonjour!
2 
3  

 

 

分公司的使

和其他大部分编程语言不同,Swift并无强制要求我们于各条告词的结尾处使用分号(;),当然,你啊堪按
你协调之惯添加分号。有一致种植状况下必使就此分号,即我们打算在平等行外写多漫长独立的语句:

let cat ="?"; print(cat) //输出"?"

 

型别名

布尔值

Swift有一个骨干的布尔列,叫做Bool。布尔值指逻辑上的价,因为它只能是真要借。Swift有点儿个布尔常量,true和false:

let orangesAreOrange = true

let turnipsAreDelicious = false

 

当咱们编辑条件语句,比如说if语句的下,布尔值非常之好用

 1 if turnipsAreDelicious {
 2 
 3 print("Mmm,tasty turnips!")
 4 
 5 } else {
 6 
 7 print("Eww,turnips are horrible.")
 8 
 9 }//输出"Eww, turnips are horrible."
10 
11  

 

 

元组

元组把多只价值组合成一个复合值。元组内之价值好是随意档次,并无求是同一类别

let http404Error = (404,  "Not Found")

 

咱们得拿自由顺序的品种组合成一个元组,这个元组可以分包有种类

1 let (statusCode,statusMessage) = http404Error
2 
3 print("The status code is \(statusCode)")//输出"The status code is 404"
4 
5 print("The status message is \(statusMessage)") //输出"The status message is Not Found"