每日一问15——swift基础(01)

一直使用objective-c进行开发,今天终于下定决心好好学习一下swift。学习后还是感觉到swift在使用上的方便之处。于是在此做一个笔记加深记忆。

常量与变量

声明基本数据类型

在objective-c中声明变量格式: 类型 变量名 = 值

int a = 10; 

在swift中 : var/let 变量名 : 类型 = 值
其中var代表变量,let代表常量。常量的是不可以不修改的。

var a : Int = 2
a = 10;//正确

let b : Int = 1
b = 10; //错误

值得一提的是let声明的常量在内存上保存的地址不能发生改变,所以我们无法对let常量重新赋值。

或许你已经注意到了,这样声明swift貌似比oc更加麻烦,但swift厉害之处就在于它可以推测类型。

let a = 2 //系统自动转换为Int类型
let b = 2.23 //系统自动转换为Double类型
基本类型转换

在objective中,当我们使用两个不同类型的变量运算时,系统会采取隐式转换将类型统一。

int a = 1;
float b = 2.2;
int c = a + b; // c=3

但在swift中,系统并不会隐式转换,所以当两个不同类型的变量运算时,编译器会报错。我们需要手动的去做类型转换。

let x :Int = 1
let y :Double = 2.31
let z = x + Int(y)

我们需要使用: 类型(变量) 的方式来进行类型转换

非基本数据类型
声明一个UiView的对象,并修改背景颜色

objective-c中

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 100)];
view.backgroundColor = [UIColor redColor];

swift中:

let rect = CGRect(x: 0, y: 0, width: 100, height: 100)
let view : UIView = UIView(frame: rect)
view.backgroundColor = UIColor.brown

可以看到swift中不支持以前的CGRectMake方法,而使用CGRect(参数名:参数...)的方式初始化,同样在初始化view的时候也是调用UIView:(参数名:参数...)的方式代替oc中的initWithFrame:函数

条件判断语句

与objective-c最大的不同是,swift在做条件判断的时候不支持(非0/nil)这样的判断。

let i = 1
if i {  //这样是不行的
}

if i == 1 { //这样才可以
}
guard关键字

guard关键是swift新引入的一种写法,它必须和else连用

let age = 20;
func online(age : Int) {
    guard age > 18 else {
        print("error")
        return
    }
    print("ok")
}

如果满足条件,会直接跳过{}执行后面代码,如果不满足则会执行else里的内容。使用它的好处在于可以让我们的代码可读性更高。

switch关键字

和objective-c不同
1.swift中不需要在case中写break。
2.可以支持多个条件的判断
3.支持区间

let age = 20;
switch age {
case 2:
    print("小孩子")
    fallthrough
case 10,19:
    print("少年郎")
case 20...30:
    print("工作狗")
default:
     print("有问题")
}

case1.如果希望执行完case后继续执行,可以添加fallthrough关键字
case2.使用,分割来表示多个条件判断
case3.判断是否在区间 20...30 等于 x >= 20 && x <= 30,也支持半开半闭区间20..<30 等于x > 20 && x <30

循环语句

for循环是我们使用得最多的循环语句了,在swift3.0以后for循环只支持区间遍历

for i in 0..<10 {
    print(i)
}

//oc中
for (int i = 0; i < 10; i++) {
    print(i)
}

当循环体内不需要使用i时,我们还可以用_代替。

for _ in 0..<10 {
    print("遍历10次")
}

while循环和oc种差不多,只是省略了判断语句的括弧

var num = 1
while num <= 10{
    num += 1 //swift中不支持使用++运算符
    print(num)
}

这里有个注意点,swift中不支持使用++运算符。

do...while循环在swift中使用repeat关键字代替do

var num = 10
repeat {
    num -= 1
    print(num)
} while num > 0

你可能感兴趣的:(每日一问15——swift基础(01))