Swift语言学习笔记(一)

原创 2017年01月03日 19:43:48

在学习过程中遇到的Swift语言中一些要注意的知识点,整理出来备忘。

1.  Swift中使用let关键字来定义常量,使用var来定义变量。

2.  Swift中可以通过在变量名后面添加冒号,在冒号后指定变量类型。例如:var username:String

3.  Swift中变量名几乎可以包含任何字符,包括Unicode字符(除了数学运算符、箭头、无效的Unicode符号、短横线“-”等,额,这个虽然好,但是作为程序员,还是规矩一点,用字母和数字吧)。

4.  如果变量名和保留关键字冲突了,在变量名前面加“`”符号来引用(不推荐)。

5.  Swift中变量类型确定之后就不能更改其类型了。

6.  使用全局方法println来输出字符串,另一个方法print也可以输出,但是print最后不输出一个换行。在输出字符串中如果想要加入变量,需要将变量用圆括号包起来,再在前面加一个反斜线“\”。例如:println(“The name of theuser is \(username)”)

7.  Swift中多行注释可以嵌套,例如:

/*this is the start of the first multiline comment

/*this is the second, nested multiline comment */

thisis the end of the first multiline comment */

8.  Swift中语句不要求以分号结尾(当然也可以有),如果你需要在一行语句中包含多个表达式,就需要用分号隔开了。

9.  可以使用maxmin来访问整数类型的最大和最小值,例如UInt8.minUInt8.max

10.          32为系统上Int类型等于Int32,在64位系统上,Int类型等于Int64UInt也有相似的特点。

11.          Swift是类型安全的编程语言。

12.          Swift中的数字字面值:

十进制:不需要前缀

二进制:前缀0b

八进制:前缀0o

十六进制:前缀0x

13.          Swift中的科学计数法(举例):

1.25e2表示1.25乘以10的平方

1.25e-2表示1.25乘以10的负二次方

对于16进制的值,幂指数的底不是10而是2:

0x9p2表示9乘以2的平方

0x9p-2表示9乘以2的负二次方

14.          数字字面值中可以添加下划线和占位的0用来增加数字的可读性,例如:

letnum1 = 000123.456

letnum2 = 1_000_000

letnum3 = 1_000_000.000_000_1

15.          Swift不支持隐式类型转换,必须显示地将原类型转换为目标类型,否则无法通过编译。例如:

varx = 10;

vary = 5.5;        //Double

//x =y             //Error

x= Double(y);

16.          使用typealias关键字定义类型别名,例如:

typealiasMyType = Int16

varx : MyType = 10;

17.          元组的使用方法:

Swift中可以将任意类型的一组值组合成一个元组(tuple),例如:

letstudentJohnInfo = (80, “John”, true)

可以通过下面几种方式来访问元组的元素:

//第一种(定义一个和元组相同的解构)

let(score, name, isMale) = studentJohnInfo

println(name)

println(score)

println(isMale? “male” : “female”)

如果我们不需要某个属性,例如isMale属性不需要,可以在解构的时候用下划线忽略该属性:

let(score, name, _) = studentJohnInfo

//第二种(使用下标)

println(studentJohnInfo.1)

println(studentJohnInfo.0)

println(studentJohnInfo.2? “male” : “female”)

//第三种(在定义的时候为元组的元素命名)

letstudentJohnInfo = (score : 80, name : “John”, isMale : true)

println(studentJohnInfo.name)

println(studentJohnInfo.score)

println(studentJohnInfo.isMale? “male” : “female”)

18.          在基本类型后面加问号可以定义可选类型,例如:

varx : Int? = 10;

x= “abc”.toInt()     //x = nil

x= “123”.toInt()    //x = 123

可选类型可以直接用作if语句的条件,如果可选类型包含值,则判断结果为true,如果可选类型的值为nil,则判断结果为false。

如果确定可选类型中包含值,可以在可选类型后面添加叹号来取出它的值:

vary : Int = x!   //if x is nil, this statement will trigger a runtimeerror

如果需要表明一个可选类型一定存在值,可以用叹号而不是问号来定义其类型,依然可以将其赋值为nil(不过这样做的话会造成不必要的麻烦),这样标识可以让调用者知道(或者说假设)这个变量始终有值,并且在取值的时候不再需要使用叹号了:

varx : Int! = “123”.toInt()

println(x)

19.          断言的用法:

varage : Int = -10

assert(age> 0, "age cannot be less than zero!")

20.          Swift中的赋值运算符(=)不会返回任何值,这样做可以防止在if语句中将“==”误写为“=”而不报错。

21.          Swift中的模运算(%)可以针对小数:

varx = 8 % 2.5      //x = 0.5

22.          Swift中提供“===”和“!==”来判断两个对象引用是否指向相同的实例对象。

23.          Swift中提供范围运算符“a..b”和“a…b”用来快速创建一个取值范围,例如:

forindex in 1..10 {

println(index)

}         //输出123456789

forindex in 1…10 {

println(index)

}         //输出12345678910

24.          Swift中的字符类型为Character,可以用Character来遍历String

forc in “abcd” {

println(c)

}         //output is abcd

25.          可以使用全局函数countElements来获取String的长度(countElements不仅可以获取String的长度,还可以获取例如数组之类的所有可迭代类型的元素数量)。

26.          Swift中在字符串内串联变量使用下面的方式(圆括号包裹起来前面加上反斜线):

letname = “someone”

letage = 26

letdescription = “\(name) is at the age of \(age)”

27.          Swift中使用hasPrefixhasSuffix来判断字符串是否由另一字符串开头或者结尾。

28.          字符串的uppercaseStringlowercaseString属性来获取其全大写和全小写格式的字符串。

29.          Swift中的数组和字典对象对于其元素的类型有严格要求,当数组和字典的元素类型确定以后,不能再向其中插入其他类型的元素,元素不需要是类,也可以是基本类型。

30.          声明数组有两种方式,一种是使用Array<Type>来声明,另外一种是使用Type[]来声明,例如:

vararr1 : Array<String> = [“abc”, “def”]

vararr2 : Int[] = [1, 2, 3]

var arr3 =Int[]()        //创建空数组的方法

var arr4 = String[](count: 10,repeatedValue:”a”) //arr410个字符串”a”组成

arr4 =[]       //arr4已经确定类型之后,可以通过这行语句将其置空

var arr5 = Array(count:10,repeatedValue:1)        //Swift可以通过repeatedValue来推断数组类型

当然,如果不指定类型,Swift也会通过初始化语句推测出类型。

31.          添加数组元素可以使用append方法,也可以直接用“+=”运算符来添加:

arr1+= [“ghi”, “jkl”]         //arr1 =[“abc”, “def”, “ghi”, “jkl”]

arr2+=4                               //arr2 = [1, 2, 3, 4]

数组元素可以使用中括号加索引值来获取和修改。

还可以使用范围运算符来做批量索引:

arr1[0…2]= [“a”, “b”]           //arr1= [“a”, “b”, “jkl”]

同类型的数组之间可以用“+”号直接相加:

vararr3 = arr2 + [5, 6, 7, 8]

在数组的某个位置插入元素使用下面的方法:

arr1.insert(“c”,atIndex:2)

删除某个数组元素:

arr1.removeAtIndex(2)

删除最后的元素:

arr1.removeLast()

可以使用两种方式来遍历数组:

foritem in arr2 {

   println(item)

}

 

for(index, item) in enumerate(arr1) {

   println("item \(index + 1) is \(item)");

}

32.          字典类型使用Dictionary<KeyType,ValueType>来声明:

varscores: Dictionary<String, Int> = [“S1”:95, “S2”:60, “S3”:80]

和数组一样,也可以让Swift来推测字典类型:

varscores = [“S1”:95, “S2”:60, “S3”:80]

创建空字典:

vardictEmpty = Dictionary<Int, String>()

dictEmpty = [:]      //必须在已经明确了类型的时候才能这么用

33.          使用中括号加键来访问和修改数组元素,也可以使用updateValue(forKey:)方法来更新元素值,这两种方法当键不存在的时候都会向字典中插入新的元素。updateValue(forKey:)方法会返回一个可选类型,当键存在时,返回原来的键值,当键不存在时,返回nil。如果将一个键值置为nil,相当于将其删除,或者也可以用removeValueForKey方法。

使用元组来遍历字典:

for(studentName, score) in scores {

println(“\(studentName) has score \(score)”)

}

也可以分别遍历Key和Value:

forstudentName in scores.keys {

println(“\(studentName)”)

}

forscore in scores.values {

println(“\(score)”)

}

34.          如果使用let来声明字典(即声明为常量),那么字典的大小和内容都不可编辑(如果编辑会出现编译错误),但是对于数组来说,如果使用let来声明,那么数组的大小不可变(即不能添加删除元素),但是数组元素的值是可以编辑的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Swift成为主流语言的10个理由

是时候使用易入手又全面的Swif语言为iOS和mac OS X做应用开发了。 虽然编程语言不会那么容易消逝,但坚持衰落范例的开发小组正在这么做。如果你正为移动设备开发应用程序,并且你还没有研究Swi...
  • BaiHuaXiu123
  • BaiHuaXiu123
  • 2016年05月24日 22:42
  • 3455

我对Swift的几点疑问

Swift自问世以来,就获得了全球开发者的青睐,可以说集万千庞爱于一身了,尤其是WWDC上的性能展示,更是让开发者为之振奋。但是,我却一直有几个疑问没有弄清,不知您的看法如何。Swift到底是编译型的...
  • caowenbin
  • caowenbin
  • 2014年06月16日 19:31
  • 5816

ios8+swift app多语言——国际化和本土化

iOS初学者可以关注我的iOS开发相关的视频课程。 开发一款国际化的iOS App,则必须考虑支持多国家语言,如何实现呢? 第一、国际化——多国家语言;第二、本土化——数据、时间、货币格式等。 DEM...
  • cdblh
  • cdblh
  • 2015年03月17日 20:06
  • 4518

Swift中的本地化实现

Swift中的本地化实现
  • csharp25
  • csharp25
  • 2017年07月15日 20:44
  • 313

Swift语言和其他计算机语言的比较

Swift集成了传统面向对象编程语言的特性,同时又具备函数式编程的一些特征。如果你曾经学过C#,Python,Ruby或者JavaScript,那么会发现Swift有很多相似之处,很容易上手。 在2...
  • u012260238
  • u012260238
  • 2016年03月03日 10:40
  • 1091

开始使用 swift 的 c语言 库

适合iOS开发者的15大网站推荐   iOS 开发者若想使技艺达到炉火纯青的地步,就要不断借鉴他人的有益经验,紧跟新兴科技和工具的步伐。除了 Apple...
  • u012524022
  • u012524022
  • 2015年03月07日 12:15
  • 6379

在Swift中使用C语言的指针

Objective-C和C语言经常需要使用到指针。Swift中的数据类型由于良好的设计,使其可以和基于指针的C语言API无缝混用。同时Swift也可以自动处理大多数将指针作为参数的情况。在这篇文章里,...
  • mapleandkw
  • mapleandkw
  • 2015年01月03日 16:39
  • 569

Swift基础之Swift调用OC语言文件使用步骤

Swift语言中,有很多封装类并没有,如果需要使用到,就需要桥接OC语言中的类,这时候就需要使用桥接头文件,一下是使用的步骤:创建一个Swift项目Demo,然后新建一个OC语言的文件如图:创建一个B...
  • hbblzjy
  • hbblzjy
  • 2016年08月19日 17:27
  • 1023

Swift 编程语言入门教程

今天在网上看到一篇非常好的教程,分享给大家 原文地址:http://gashero.iteye.com/blog/2075324 目录 1   简介2   Swift入门3   ...
  • sqc3375177
  • sqc3375177
  • 2014年06月07日 17:01
  • 82259

swift 相册的自定义

用 swift写的相册自定义,将相册里面的所有图片取出,然后在自定义的页面显示,用这个方法可以写相册图片的多张选择,相册的样式自定义。 代码部分:...
  • maiwc
  • maiwc
  • 2016年10月28日 14:58
  • 637
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Swift语言学习笔记(一)
举报原因:
原因补充:

(最多只允许输入30个字)