Swift语言学习笔记(一)

来源:互联网 发布:金融交易软件开发 编辑:程序博客网 时间:2024/06/15 16:22

在学习过程中遇到的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来声明,那么数组的大小不可变(即不能添加删除元素),但是数组元素的值是可以编辑的。

76 0
原创粉丝点击